// High-accuracy computation of Goursat-Hardy's integral:
// I = \int_{0}^{\infty} xdx/(1+x^6 \sin^2 x)
//
// This is a code only for 64-bit environment.
// %gcc -O2 "this file name".c -lm -lmpfr -lgmp -lpthread
//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
#include <math.h>
#include <limits.h>
#include <mpfr.h>
#include <pthread.h>
double get_time_sec() {
  struct timeval tv;
  gettimeofday(&tv, NULL);
  return tv.tv_sec + 0.000001 * tv.tv_usec;
}
// parameter list of
//   digit number(PRECISION)
//   XL_ETABS,XL_ERADIX,XL_TTABS,XL_TRADIX
//   :XL_EXPIN,XL_ATANN
//
//   1k(3330)  10k(33300)  100k(333000)   1M(3330000)
//   12.7      39.12,35.12 201.8,154.8    755.3,579.3
//   :2,2      :3,2        :4,3           :5,4
//   11.8      33.13,33.13 178.9,155.9    723.4,542.4
//                         149.10,149.10  718.5,534.5
//                         136.11,136.11  620.6,511.6
//                         124.12,124.12  595.7,513.7
//                         124.13,124.13  542.8,434.8

#define PRECISION 33300

//#define DEB_PRN
//#define DEB_NLOOP 100

#define N_PTH 24
// N_PTH is number of threads

#define XL_ETABS 39
#define XL_ERADIX 12

#define XL_TTABS 35
#define XL_TRADIX 12

#define XL_EXPIN 3
#define XL_ATANN 2


#define XL_EINIT_BIT (0.30 * sqrt(PRECISION))
#define XL_TINIT_BIT (0.18 * sqrt(PRECISION))
#define XL_INIT_GBIT 24

#ifdef N_PTH
#define my_thread_create(thp,func,argp) { \
  if (pthread_create(thp, NULL, func, (void *) argp) != 0) { \
  fprintf(stderr, "my thread error\n"); \
  exit(1); \
  } \
}
#define my_thread_wait(th) { \
  if (pthread_join(th, NULL) != 0) { \
  fprintf(stderr, "my thread error\n"); \
  exit(1); \
  } \
}
#endif


//////////////////////////////////////////////////////////////
// math. func. lib.

mpfr_t xl_et[XL_ETABS][(1L << XL_ERADIX) - 1];
mpfr_t xl_ln2;

void sincos_taylor(mpfr_t s, mpfr_t c, mpfr_t x, int hypmode, long prc, mp_rnd_t rmd)
{
  mpfr_t x2, y[1L << (XL_EXPIN - 1)], t, u, w;
  long i, j, j0, p, p2, pw, faci;
  mpz_t facz;
  mpfr_init2(x2, prc);
  mpfr_sqr(x2, x, rmd);
  if (hypmode == 0) mpfr_neg(x2, x2, rmd);
  p2 = -prc;
  if (mpfr_sgn(x2)) p2 = mpfr_get_exp(x2);
  pw = prc + (p2 << (XL_EXPIN - 1)) - (p2 >> 2);
  p = pw - p2;
  for (i = 0; i < (1L << (XL_EXPIN - 1)); i++) {
    p += p2;
    if (p < MPFR_PREC_MIN) p = MPFR_PREC_MIN;
    mpfr_init2(y[i], p);
    mpfr_set_ui(y[i], 0, rmd);
  }
  if (pw > 0) {
    if (pw < MPFR_PREC_MIN) pw = MPFR_PREC_MIN;
    mpfr_init2(w, pw);
    mpfr_set(w, x2, rmd);
    for (i = 0; i < XL_EXPIN - 1; i++) mpfr_sqr(w, w, rmd);
    mpfr_init2(t, pw);
    mpfr_set(t, w, rmd);
    mpfr_init2(u, pw);
    for (j = (1L << (XL_EXPIN - 1));; j += (1L << (XL_EXPIN - 1))) {
      for (i = 0; i < (1L << (XL_EXPIN - 1)); i += 2) {
        j0 = (2 * i + 2 * j + 2) * (2 * i + 2 * j + 3);
        mpfr_div_ui(t, t, (2 * i + 2 * j) * (2 * i + 2 * j + 1) * j0, rmd);
        mpfr_mul_ui(u, t, j0, rmd);
        mpfr_add(y[i], y[i], u, rmd);
        mpfr_add(y[i + 1], y[i + 1], t, rmd);
      }
      if (mpfr_sgn(t) == 0) break;
      p = pw + mpfr_get_exp(t);
      if (p <= 0) break;
      if (p < MPFR_PREC_MIN) p = MPFR_PREC_MIN;
      mpfr_set_prec(u, p);
      mpfr_set(u, t, rmd);
      mpfr_set_prec(t, p);
      mpfr_set(t, w, rmd);
      mpfr_mul(t, t, u, rmd);
    }
    mpfr_clear(u);
    mpfr_clear(w);
    mpfr_clear(t);
  }
  {
    i = (1L << (XL_EXPIN - 1)) - 1;
    p = prc + p2 * i - (p2 >> 2);
    if (p < MPFR_PREC_MIN) p = MPFR_PREC_MIN;
    mpfr_init2(w, p);
    mpfr_init2(t, p);
    mpfr_add_ui(t, y[i], 1, rmd);
    faci = (2 * i) * (2 * i + 1);
    mpfr_clear(y[i]);
  }
  for (i = (1L << (XL_EXPIN - 1)) - 2; i >= 0; i--) {
    mpfr_set(w, x2, rmd);
    mpfr_mul(t, t, w, rmd);
    mpfr_add(t, y[i], t, rmd);
    if (i) {
      if (faci > (1L << (61 - 2 * XL_EXPIN))) {
        mpz_init(facz);
        mpz_set_ui(facz, faci);
        faci = 0;
      }
      p = prc + p2 * i - (p2 >> 2);
      if (p < MPFR_PREC_MIN) p = MPFR_PREC_MIN;
      mpfr_set_prec(w, p);
      if (faci) {
        mpfr_add_ui(w, t, faci, rmd);
        faci *= (2 * i) * (2 * i + 1);
      } else {
        mpfr_add_z(w, t, facz, rmd);
        mpz_mul_ui(facz, facz, (2 * i) * (2 * i + 1));
      }
      mpfr_set_prec(t, p);
      mpfr_set(t, w, rmd);
    }
    mpfr_clear(y[i]);
  }
  mpfr_clear(w);
  if (faci) {
    mpfr_div_ui(t, t, faci, rmd);
  } else {
    mpfr_div_z(t, t, facz, rmd);
    mpz_clear(facz);
  }
  mpfr_add_ui(x2, t, 1, rmd);
  mpfr_mul(s, x2, x, rmd);
  mpfr_sqr(x2, s, rmd);
  if (hypmode == 0) mpfr_neg(x2, x2, rmd);
  mpfr_add_ui(x2, x2, 1, rmd);
  mpfr_sqrt(c, x2, rmd);
  mpfr_clear(t);
  mpfr_clear(x2);
}

void atan_taylor(mpfr_t atn, mpfr_t x, int hypmode, long prc, mp_rnd_t rmd)
{
  mpfr_t x2, y[1L << XL_ATANN], t, u, w;
  long i, j, j0, p, p2, pw, faci;
  mpfr_init2(x2, prc);
  mpfr_sqr(x2, x, rmd);
  if (hypmode == 0) mpfr_neg(x2, x2, rmd);
  p2 = -prc;
  if (mpfr_sgn(x2)) p2 = mpfr_get_exp(x2);
  pw = prc + (p2 << XL_ATANN) - (p2 >> 2);
  p = pw - (p2 << 2);
  for (i = 0; i < (1L << XL_ATANN); i++) {
    if ((i & 3) == 0) {
      p += (p2 << 2);
      if (p < MPFR_PREC_MIN) p = MPFR_PREC_MIN;
    }
    mpfr_init2(y[i], p);
    mpfr_set_ui(y[i], 0, rmd);
  }
  if (pw > 0) {
    if (pw < MPFR_PREC_MIN) pw = MPFR_PREC_MIN;
    mpfr_init2(w, pw);
    mpfr_set(w, x2, rmd);
    for (i = 0; i < XL_ATANN; i++) mpfr_sqr(w, w, rmd);
    mpfr_init2(t, pw);
    mpfr_set(t, w, rmd);
    mpfr_init2(u, pw);
    for (j = (1L << XL_ATANN);; j += (1L << XL_ATANN)) {
      for (i = 0; i < (1L << XL_ATANN); i += 4) {
        j0 = (2 * i + 2 * j + 4) * (2 * i + 2 * j + 4) - 1;
        mpfr_div_ui(u, t, j0 * (j0 - 8), rmd);
        mpfr_add(y[i + 1], y[i + 1], u, rmd);
        mpfr_mul_ui(u, u, 2 * i + 2 * j + 3, rmd);
        mpfr_add(y[i + 2], y[i + 2], u, rmd);
        mpfr_mul_ui(u, u, 2 * i + 2 * j + 5, rmd);
        mpfr_add(y[i], y[i], u, rmd);
        mpfr_mul_ui(u, u, 2 * i + 2 * j + 1, rmd);
        mpfr_add(y[i + 3], y[i + 3], u, rmd);
      }
      if (mpfr_sgn(t) == 0) break;
      p = pw + mpfr_get_exp(t);
      if (p <= 0) break;
      if (p < MPFR_PREC_MIN) p = MPFR_PREC_MIN;
      mpfr_set_prec(u, p);
      mpfr_set(u, t, rmd);
      mpfr_set_prec(t, p);
      mpfr_set(t, w, rmd);
      mpfr_mul(t, t, u, rmd);
    }
    mpfr_clear(u);
    mpfr_clear(w);
    mpfr_clear(t);
    for (i = 0; i < (1L << XL_ATANN); i += 4) {
      mpfr_mul_2si(y[i], y[i], 1, rmd);
      mpfr_mul_2si(y[i + 2], y[i + 2], 3, rmd);
      mpfr_sub(y[i + 2], y[i], y[i + 2], rmd);
      mpfr_add(y[i + 2], y[i + 2], y[i + 3], rmd);
      mpfr_mul_2si(y[i + 1], y[i + 1], 4, rmd);
      mpfr_sub(y[i + 1], y[i + 2], y[i + 1], rmd);
      mpfr_add(y[i + 1], y[i + 1], y[i], rmd);
      mpfr_mul_ui(y[i], y[i], 3, rmd);
      mpfr_add(y[i], y[i], y[i + 3], rmd);
    }
  }
  {
    i = (1L << XL_ATANN) - 1;
    p = prc + p2 * (i - 1) - (p2 >> 2);
    if (p < MPFR_PREC_MIN) p = MPFR_PREC_MIN;
    mpfr_init2(w, p);
    faci = 2 * i + 1;
    mpfr_mul_ui(y[i], y[i], faci, rmd);
    mpfr_init2(t, p);
    mpfr_add_ui(t, y[i], 1, rmd);
    mpfr_clear(y[i]);
  }
  for (i = (1L << XL_ATANN) - 2; i >= 0; i--) {
    mpfr_set(w, x2, rmd);
    mpfr_mul(t, t, w, rmd);
    p = prc + p2 * (i - 1) - (p2 >> 2);
    if (p < MPFR_PREC_MIN) p = MPFR_PREC_MIN;
    if (p > prc) p = prc;
    mpfr_set_prec(w, p);
    mpfr_mul_ui(w, t, 2 * i + 1, rmd);
    mpfr_add_ui(w, w, faci, rmd);
    faci *= 2 * i + 1;
    mpfr_mul_ui(y[i], y[i], faci, rmd);
    mpfr_set_prec(t, p);
    mpfr_add(t, y[i], w, rmd);
    mpfr_clear(y[i]);
    if (i == 0 || faci > (1L << (61 - XL_ATANN - 1))) {
      mpfr_div_ui(t, t, faci, rmd);
      faci = 1;
    }
  }
  mpfr_clear(w);
  mpfr_mul(atn, t, x, rmd);
  mpfr_clear(t);
  mpfr_clear(x2);
}

int log1pe2_taylor(mpfr_t y, long m, long n, long prc, mp_rnd_t rmd)
//// y=log(1+m/exp2(n))
{
  mpfr_t s[4], t, u;
  long mw, i, j, j0, p;
  int ir = 0, mf = 1;
  for (i = 0; i < 4; i++) {
    mpfr_init2(s[i], prc);
    mpfr_set_ui(s[i], 0, rmd);
  }
  mw = m * m;
  mpfr_init2(t, prc);
  mpfr_set_ui_2exp(t, mw, -2 * n, rmd);
  if (mw < (1L << 31)) {
    mw *= mw;
    mf = 0;
  }
  mpfr_init2(u, prc);
  for (j = 4;; j += 4) {
    j0 = j * (j + 1);
    if (j0 < (1L << 31)) {
      mpfr_div_ui(u, t, j0 * (j0 - 2), rmd);
    } else {
      mpfr_div_ui(u, t, j0, rmd);
      mpfr_div_ui(u, u, j0 - 2, rmd);
    }
    mpfr_add(s[1], s[1], u, rmd);
    mpfr_mul_ui(u, u, j, rmd);
    mpfr_add(s[2], s[2], u, rmd);
    mpfr_mul_ui(u, u, j + 1, rmd);
    mpfr_add(s[0], s[0], u, rmd);
    mpfr_mul_ui(u, u, j - 1, rmd);
    mpfr_add(s[3], s[3], u, rmd);
    if (j > (1L << 31)) {
      ir = -1;
      break;
    }
    if (mpfr_sgn(t) == 0) break;
    p = prc + mpfr_get_exp(t);
    if (p <= 0) break;
    if (10 * p < 9 * (long) mpfr_get_prec(t)) {
      if (p < MPFR_PREC_MIN) p = MPFR_PREC_MIN;
      mpfr_set_prec(u, p);
      mpfr_set(u, t, rmd);
      mpfr_set_prec(t, p);
      mpfr_set(t, u, rmd);
    }
    mpfr_mul_ui(t, t, mw, rmd);
    if (mf) mpfr_mul_ui(t, t, mw, rmd);
    mpfr_mul_2si(t, t, -4 * n, rmd);
  }
  mpfr_clear(u);
  mpfr_clear(t);
  mpfr_mul_2si(s[2], s[2], 1, rmd);
  mpfr_sub(s[2], s[0], s[2], rmd);
  mpfr_add(s[2], s[2], s[3], rmd);
  mpfr_mul_2si(s[1], s[1], 1, rmd);
  mpfr_sub(s[1], s[2], s[1], rmd);
  mpfr_add(s[1], s[1], s[0], rmd);
  mpfr_mul_ui(s[0], s[0], 3, rmd);
  mpfr_add(s[0], s[0], s[3], rmd);
  mpfr_mul_2si(s[1], s[1], 1, rmd);
  mpfr_add_ui(s[1], s[1], 1, rmd);
  mpfr_mul_2si(s[1], s[1], -1, rmd);
  for (i = 3; i > 0; i--) {
    mpfr_mul_ui(s[i], s[i], m, rmd);
    mpfr_mul_2si(s[i], s[i], -n, rmd);
    mpfr_sub(s[i - 1], s[i - 1], s[i], rmd);
    mpfr_clear(s[i]);
  }
  mpfr_add_ui(s[0], s[0], 1, rmd);
  mpfr_mul_ui(s[0], s[0], m, rmd);
  mpfr_mul_2si(y, s[0], -n, rmd);
  mpfr_clear(s[0]);
  return ir;
}

int atane2_taylor(mpfr_t y, long m, long n, long prc, mp_rnd_t rmd)
//// y=atan(m/exp2(n))
{
  mpfr_t s0, s1, t, u;
  long mw, j, p;
  int ir = 0, mf = 1;
  mpfr_init2(s0, prc);
  mpfr_set_ui(s0, 0, rmd);
  mpfr_init2(s1, prc);
  mpfr_set_ui(s1, 0, rmd);
  mw = m * m;
  mpfr_init2(t, prc);
  mpfr_set_ui_2exp(t, mw, -2 * n, rmd);
  if (mw < (1L << 31)) {
    mw *= mw;
    mf = 0;
  }
  mpfr_init2(u, prc);
  for (j = 3;; j += 4) {
    mpfr_div_ui(u, t, j * (j + 2), rmd);
    mpfr_add(s0, s0, u, rmd);
    mpfr_mul_ui(u, u, j, rmd);
    mpfr_add(s1, s1, u, rmd);
    if (j > (1L << 31)) {
      ir = -1;
      break;
    }
    if (mpfr_sgn(t) == 0) break;
    p = prc + mpfr_get_exp(t);
    if (p <= 0) break;
    if (10 * p < 9 * (long) mpfr_get_prec(t)) {
      if (p < MPFR_PREC_MIN) p = MPFR_PREC_MIN;
      mpfr_set_prec(u, p);
      mpfr_set(u, t, rmd);
      mpfr_set_prec(t, p);
      mpfr_set(t, u, rmd);
    }
    mpfr_mul_ui(t, t, mw, rmd);
    if (mf) mpfr_mul_ui(t, t, mw, rmd);
    mpfr_mul_2si(t, t, -4 * n, rmd);
  }
  mpfr_clear(u);
  mpfr_clear(t);
  mpfr_mul_2si(s0, s0, 1, rmd);
  mpfr_add(s0, s0, s1, rmd);
  mpfr_mul_ui(s1, s1, m * m, rmd);
  mpfr_mul_2si(s1, s1, -2 * n, rmd);
  mpfr_sub(s0, s1, s0, rmd);
  mpfr_clear(s1);
  mpfr_add_ui(s0, s0, 1, rmd);
  mpfr_mul_ui(s0, s0, m, rmd);
  mpfr_mul_2si(y, s0, -n, rmd);
  mpfr_clear(s0);
  return ir;
}

void log1p_rec(mpfr_t y, mpfr_t x, long j0, long k0, long prc, mp_rnd_t rmd)
{
  mpfr_t xt, yt, t;
  long j, k, m;
  mpfr_init2(xt, prc);
  mpfr_add_ui(xt, x, 1, rmd);
  mpfr_div(xt, x, xt, rmd);
  mpfr_init2(yt, prc);
  mpfr_set_ui(yt, 0, rmd);
  mpfr_init2(t, prc);
  for (j = j0; j < XL_ETABS; j++) {
    mpfr_ui_sub(t, 1, xt, rmd);
    mpfr_mul_2si(t, t, -XL_ERADIX * j - 1, rmd);
    m = 0;
    for (k = XL_ERADIX - 1;; k--) {
      if (mpfr_cmp(xt, t) >= 0 && m + (1L << k) <= k0) {
        mpfr_sub(xt, xt, t, rmd);
        m += (1L << k);
      }
      if (k <= 0) break;
      mpfr_mul_2si(t, t, -1, rmd);
    }
    if (m > 0) mpfr_add(yt, yt, xl_et[j][m - 1], rmd);
    k0 = (1L << XL_ERADIX) - 1;
  }
  mpfr_ui_sub(t, 2, xt, rmd);
  mpfr_div(xt, xt, t, rmd);
  atan_taylor(xt, xt, 1, prc, rmd);
  mpfr_mul_2si(xt, xt, 1, rmd);
  mpfr_add(y, yt, xt, rmd);
  mpfr_clear(t);
  mpfr_clear(yt);
  mpfr_clear(xt);
}

int et_init_sub(long step, long nstep, long j0, long prc, mp_rnd_t rmd)
{
  long j, k, i = 0;
  for (j = XL_ETABS - 1; j > j0; j--) {
    for (k = 0; k < (1L << XL_ERADIX) - 1; k++) {
      if (i++ % nstep == step) {
        if (log1pe2_taylor(xl_et[j][k], k + 1, XL_ERADIX * (j + 1), prc, rmd))
          return -1;
      }
    }
#ifdef DEB_PRN
    printf("et %ld %ld\n", j, step);
#endif
  }
  return 0;
}

#ifdef N_PTH
struct xt_init_sub_arg_st {
  int err;
  long step;
  long nstep;
  long j0;
  long prc;
  mp_rnd_t rmd;
};
typedef struct xt_init_sub_arg_st xt_init_sub_arg_t;
void *et_init_sub_thread(void *p) {
  ((xt_init_sub_arg_t *) p)->err = 
    et_init_sub(
                ((xt_init_sub_arg_t *) p)->step, 
                ((xt_init_sub_arg_t *) p)->nstep, 
                ((xt_init_sub_arg_t *) p)->j0, 
                ((xt_init_sub_arg_t *) p)->prc, 
                ((xt_init_sub_arg_t *) p)->rmd);
  return (void *) 0;
}
#endif

void et_init(long prc, mp_rnd_t rmd)
{
  long j, j0, k, prc2;
  prc2 = prc + XL_INIT_GBIT;
  mpfr_init2(xl_ln2, prc);
  mpfr_const_log2(xl_ln2, rmd);
  for (j = XL_ETABS - 1; j >= 0; j--) {
    for (k = 0; k < (1L << XL_ERADIX) - 1; k++) {
      mpfr_init2(xl_et[j][k], prc);
    }
  }
#ifdef N_PTH
  j0 = (long) ((1.0 / (N_PTH * XL_ERADIX)) * XL_EINIT_BIT + 1.0);
  {
    long step;
    pthread_t th[N_PTH];
    xt_init_sub_arg_t ag[N_PTH];
    for (step = 0; step < N_PTH; step++) {
      ag[step].step = step;
      ag[step].nstep = N_PTH;
      ag[step].j0 = j0;
      ag[step].prc = prc2;
      ag[step].rmd = rmd;
      my_thread_create(&th[step], et_init_sub_thread, &ag[step]);
    }
    for (step = 0; step < N_PTH; step++) {
      my_thread_wait(th[step]);
    }
    for (step = 0; step < N_PTH; step++) {
      if (ag[step].err) {
        fprintf(stderr, "log1pe2_taylor: error\n");
        exit(1);
      }
    }
  }
#else
  j0 = (long) ((1.0 / XL_ERADIX) * XL_EINIT_BIT + 0.5);
  if (et_init_sub(0, 1, j0, prc2, rmd)) {
    fprintf(stderr, "log1pe2_taylor: error\n");
    exit(1);
  }
#endif
  if (j0 > XL_ETABS - 1) j0 = XL_ETABS - 1;
  for (j = j0; j >=0; j--) {
    for (k = 0; k < (1L << XL_ERADIX) - 1; k++) {
      mpfr_set_ui_2exp(xl_et[j][k], k + 1, -XL_ERADIX * (j + 1), rmd);
      log1p_rec(xl_et[j][k], xl_et[j][k], j, k, prc2, rmd);
    }
#ifdef DEB_PRN
    printf("et %ld\n", j);
#endif
  }
}

void et_clear()
{
  long j, k;
  for (j = 0; j < XL_ETABS; j++) {
    for (k = (1L << XL_ERADIX) - 2; k >= 0; k--) {
      mpfr_clear(xl_et[j][k]);
    }
  }
  mpfr_clear(xl_ln2);
}

long exp_quorem(mpfr_t x, mpfr_t tmp, mp_rnd_t rmd)
//// x / log(2), x = x % log(2);
{
  long i = 0, k;
  int n, nmax = 20;
  for (n = 0; n < nmax; n++) {
    double xd = mpfr_get_d(x, rmd) * 1.4426950408889634073599246810019;
    // xd = (double) (x / log(2));
    if (-xd <= 1 - 1e-14 && xd <= 1) {
      if (xd <= 0) {
        if (mpfr_sgn(x) < 0) {
          mpfr_add(x, x, xl_ln2, rmd);
          i--;
        }
      } else if (xd > 1 - 1e-14) {
        if (mpfr_cmp(x, xl_ln2) >= 0) {
          mpfr_sub(x, x, xl_ln2, rmd);
          i++;
        }
      }
      break;
    }
    if (n == 0 && (xd > LONG_MAX - 1 || xd < LONG_MIN + 2)) {
      n = nmax;
      break;
    }
    k = (long) xd;
    if (xd < 0) k--;
    mpfr_mul_si(tmp, xl_ln2, k, rmd);
    mpfr_sub(x, x, tmp, rmd);
    i += k;
  }
  if (n >= nmax) {
    fprintf(stderr, "exp_quorem: error\n");
    exit(1);
  }
  return i;
}

void expxfr(mpfr_t y, mpfr_t x, long prc, mp_rnd_t rmd)
{
  mpfr_t xt;
  long i, j, k, ms, m[XL_ETABS];
  mpfr_init2(xt, prc);
  mpfr_set(xt, x, rmd);
  i = exp_quorem(xt, y, rmd);
  for (j = 0; j < XL_ETABS; j++) {
    m[j] = 0;
    for (k = XL_ERADIX - 1; k >= 0; k--) {
      if (mpfr_cmp(xt, xl_et[j][m[j] + (1L << k) - 1]) > 0) {
        m[j] += (1L << k);
      }
    }
    if (m[j] > 0) mpfr_sub(xt, xt, xl_et[j][m[j] - 1], rmd);
  }
  sincos_taylor(y, xt, xt, 1, prc, rmd);
  mpfr_add(y, y, xt, rmd);
  for (j = 0; j < XL_ETABS; j++) {
    if (m[j] <= 0) continue;
    k = -XL_ERADIX * (j + 1);
    for (ms = m[j]; (ms & 1) == 0; ms >>= 1) k++;
    mpfr_mul_2si(xt, y, k, rmd);
    if (ms > 1) mpfr_mul_ui(xt, xt, ms, rmd);
    mpfr_add(y, y, xt, rmd);
  }
  mpfr_clear(xt);
  if (i) mpfr_mul_2si(y, y, i, rmd);
}

void expm1xfr(mpfr_t y, mpfr_t x, long prc, mp_rnd_t rmd)
{
  mpfr_t xt;
  long i, j, k, ms, m[XL_ETABS];
  mpfr_init2(xt, prc);
  mpfr_set(xt, x, rmd);
  i = exp_quorem(xt, y, rmd);
  for (j = 0; j < XL_ETABS; j++) {
    m[j] = 0;
    for (k = XL_ERADIX - 1; k >= 0; k--) {
      if (mpfr_cmp(xt, xl_et[j][m[j] + (1L << k) - 1]) > 0) {
        m[j] += (1L << k);
      }
    }
    if (m[j] > 0) mpfr_sub(xt, xt, xl_et[j][m[j] - 1], rmd);
  }
  mpfr_mul_2si(xt, xt, -1, rmd);
  sincos_taylor(y, xt, xt, 1, prc, rmd);
  mpfr_add(xt, xt, y, rmd);
  mpfr_mul_2si(xt, xt, 1, rmd);
  mpfr_mul(y, y, xt, rmd);
  for (j = 0; j < XL_ETABS; j++) {
    if (m[j] <= 0) continue;
    mpfr_add_ui(xt, y, 1, rmd);
    k = -XL_ERADIX * (j + 1);
    for (ms = m[j]; (ms & 1) == 0; ms >>= 1) k++;
    mpfr_mul_2si(xt, xt, k, rmd);
    if (ms > 1) mpfr_mul_ui(xt, xt, ms, rmd);
    mpfr_add(y, y, xt, rmd);
  }
  mpfr_clear(xt);
  if (i) {
    mpfr_add_ui(y, y, 1, rmd);
    mpfr_mul_2si(y, y, i, rmd);
    mpfr_sub_ui(y, y, 1, rmd);
  }
}

void log1p_cordic(mpfr_t y, mpfr_t x, mpfr_t t, mp_rnd_t rmd)
{
  long j, k, m, ms;
  double xd, td;
  for (j = 0; j < XL_ETABS; j++) {
    if (mpfr_sgn(x) == 0) break;
    xd = mpfr_get_d_2exp(&k, x, rmd);
    k += XL_ERADIX * (j + 1);
    mpfr_ui_sub(t, 1, x, rmd);
    td = mpfr_get_d_2exp(&m, t, rmd);
    k -= m;
    if (k < 0) continue;
    xd *= (1L << k);
    if (xd < td) continue;
    m = 0;
    td *= (1L << k);
    for (;; k--) {
      if (xd >= td) {
        xd -= td;
        m += (1L << k);
      }
      if (k <= 0) break;
      td *= 0.5;
    }
    if (xd < 1e-14 || td - xd < 1e-14) {
      m = 0;
      k = mpfr_get_exp(x) - mpfr_get_exp(t);
      mpfr_mul_2si(t, t, k, rmd);
      for (k += XL_ERADIX * (j + 1);; k--) {
        if (mpfr_cmp(x, t) >= 0) {
          mpfr_sub(x, x, t, rmd);
          m += (1L << k);
        }
        if (k <= 0) break;
        mpfr_mul_2si(t, t, -1, rmd);
      }
    } else {
      k = -XL_ERADIX * (j + 1);
      for (ms = m; (ms & 1) == 0; ms >>= 1) k++;
      mpfr_mul_2si(t, t, k, rmd);
      if (ms > 1) mpfr_mul_ui(t, t, ms, rmd);
      mpfr_sub(x, x, t, rmd);
    }
    if (m > 0) mpfr_sub(y, y, xl_et[j][m - 1], rmd);
  }
}

void logxfr(mpfr_t y, mpfr_t x, long prc, mp_rnd_t rmd)
{
  mpfr_t xt, t;
  long i = mpfr_get_exp(x);
  mpfr_init2(xt, prc);
  mpfr_mul_2si(xt, x, -i, rmd);
  mpfr_ui_sub(xt, 1, xt, rmd);
  mpfr_set_ui(y, 0, rmd);
  mpfr_init2(t, prc);
  log1p_cordic(y, xt, t, rmd);
  mpfr_ui_sub(t, 2, xt, rmd);
  mpfr_div(xt, xt, t, rmd);
  mpfr_clear(t);
  atan_taylor(xt, xt, 1, prc, rmd);
  mpfr_mul_2si(xt, xt, 1, rmd);
  mpfr_sub(y, y, xt, rmd);
  if (i) {
    mpfr_mul_si(xt, xl_ln2, i, rmd);
    mpfr_add(y, y, xt, rmd);
  }
  mpfr_clear(xt);
}

mpfr_t xl_tt[XL_TTABS][(1L << XL_TRADIX) - 1];
mpfr_t xl_pi_2;

void atan_rec(mpfr_t y, mpfr_t x, long j0, long k0, long prc, mp_rnd_t rmd)
{
  mpfr_t s, c, yt, t, u;
  long j, k, m;
  mpfr_init2(s, prc);
  mpfr_set(s, x, rmd);
  mpfr_init2(c, prc);
  mpfr_set_ui(c, 1, rmd);
  mpfr_init2(yt, prc);
  mpfr_init2(t, prc);
  mpfr_init2(u, prc);
  mpfr_set_ui(yt, 0, rmd);
  for (j = j0; j < XL_TTABS; j++) {
    mpfr_mul_2si(t, c, -XL_TRADIX * j - 2, rmd);
    mpfr_mul_2si(u, s, -XL_TRADIX * (j + 1) - 1, rmd);
    m = 0;
    for (k = XL_TRADIX - 1;; k--) {
      if (mpfr_cmp(s, t) >= 0 && m + (1L << k) <= k0) {
        mpfr_sub(s, s, t, rmd);
        m += (1L << k);
      }
      if (k <= 0) break;
      mpfr_mul_2si(t, t, -1, rmd);
    }
    if (m > 0) {
      if (m > 1) mpfr_mul_ui(u, u, m, rmd);
      mpfr_add(c, c, u, rmd);
      mpfr_add(yt, yt, xl_tt[j][m - 1], rmd);
    }
    k0 = (1L << XL_TRADIX) - 1;
  }
  mpfr_clear(u);
  mpfr_clear(t);
  mpfr_div(s, s, c, rmd);
  atan_taylor(s, s, 0, prc, rmd);
  mpfr_add(y, yt, s, rmd);
  mpfr_clear(yt);
  mpfr_clear(c);
  mpfr_clear(s);
}

int tt_init_sub(long step, long nstep, long j0, long prc, mp_rnd_t rmd)
{
  long j, k, i = 0;
  for (j = XL_TTABS - 1; j > j0; j--) {
    for (k = 0; k < (1L << XL_TRADIX) - 1; k++) {
      if (i++ % nstep == step) {
        if (atane2_taylor(xl_tt[j][k], k + 1, XL_TRADIX * (j + 1) + 1, prc, rmd))
          return -1;
      }
    }
#ifdef DEB_PRN
    printf("tt %ld %ld\n", j, step);
#endif
  }
  return 0;
}

#ifdef N_PTH
void *tt_init_sub_thread(void *p) {
  ((xt_init_sub_arg_t *) p)->err = 
    tt_init_sub(
                ((xt_init_sub_arg_t *) p)->step, 
                ((xt_init_sub_arg_t *) p)->nstep, 
                ((xt_init_sub_arg_t *) p)->j0, 
                ((xt_init_sub_arg_t *) p)->prc, 
                ((xt_init_sub_arg_t *) p)->rmd);
  return (void *) 0;
}
#endif

void tt_init(long prc, mp_rnd_t rmd)
{
  long j, j0, k, prc2;
  prc2 = prc + XL_INIT_GBIT;
  mpfr_init2(xl_pi_2, prc);
  mpfr_const_pi(xl_pi_2, rmd);
  mpfr_mul_2si(xl_pi_2, xl_pi_2, -1, rmd);
  for (j = XL_TTABS - 1; j >= 0; j--) {
    for (k = 0; k < (1L << XL_TRADIX) - 1; k++) {
      mpfr_init2(xl_tt[j][k], prc);
    }
  }
#ifdef N_PTH
  j0 = (long) ((1.0 / (N_PTH * XL_TRADIX)) * XL_TINIT_BIT + 1.0);
  {
    long step;
    pthread_t th[N_PTH];
    xt_init_sub_arg_t ag[N_PTH];
    for (step = 0; step < N_PTH; step++) {
      ag[step].step = step;
      ag[step].nstep = N_PTH;
      ag[step].j0 = j0;
      ag[step].prc = prc2;
      ag[step].rmd = rmd;
      my_thread_create(&th[step], tt_init_sub_thread, &ag[step]);
    }
    for (step = 0; step < N_PTH; step++) {
      my_thread_wait(th[step]);
    }
    for (step = 0; step < N_PTH; step++) {
      if (ag[step].err) {
        fprintf(stderr, "latane2_taylor: error\n");
        exit(1);
      }
    }
  }
#else
  j0 = (long) ((1.0 / XL_TRADIX) * XL_TINIT_BIT + 0.5);
  if (tt_init_sub(0, 1, j0, prc2, rmd)) {
    fprintf(stderr, "latane2_taylor: error\n");
    exit(1);
  }
#endif
  if (j0 > XL_TTABS - 1) j0 = XL_TTABS - 1;
  for (j = j0; j >= 0; j--) {
    for (k = 0; k < (1L << XL_TRADIX) - 1; k++) {
      mpfr_set_ui_2exp(xl_tt[j][k], k + 1, -XL_TRADIX * (j + 1) - 1, rmd);
      atan_rec(xl_tt[j][k], xl_tt[j][k], j, k, prc2, rmd);
    }
#ifdef DEB_PRN
    printf("tt %ld\n", j);
#endif
  }
}

void tt_clear()
{
  long j, k;
  for (j = 0; j < XL_TTABS; j++) {
    for (k = (1L << XL_TRADIX) - 2; k >= 0; k--) {
      mpfr_clear(xl_tt[j][k]);
    }
  }
  mpfr_clear(xl_pi_2);
}

long sincos_quorem(mpfr_t x, mpfr_t tmp, mp_rnd_t rmd)
{
  long i = 0, k;
  int n, nmax = 20;
  for (n = 0; n < nmax; n++) {
    double xd = mpfr_get_d(x, rmd) * 0.63661977236758134307553505349006;
    // xd = (double) (x / (pi / 2));
    if (-xd <= 0.5 && xd <= 0.5) {
      if (-xd > 0.5 - 1e-14 || xd > 0.5 - 1e-14) {
        mpfr_mul_2si(tmp, xl_pi_2, -1, rmd);
        if (mpfr_cmpabs(x, tmp) >= 0) {
          if (xd <= 0) {
            mpfr_add(x, x, xl_pi_2, rmd);
            i--;
          } else {
            mpfr_sub(x, x, xl_pi_2, rmd);
            i++;
          }
        }
      }
      break;
    }
    xd += 0.5;
    if (n == 0 && (xd > LONG_MAX - 1 || xd < LONG_MIN + 2)) {
      n = nmax;
      break;
    }
    k = (long) xd;
    if (xd < 0) k--;
    mpfr_mul_si(tmp, xl_pi_2, k, rmd);
    mpfr_sub(x, x, tmp, rmd);
    i += k;
  }
  if (n >= nmax) {
    fprintf(stderr, "sincos_quorem: error\n");
    exit(1);
  }
  return i;
}

void sincosxfr(mpfr_t s, mpfr_t c, mpfr_t x, long prc, mp_rnd_t rmd)
{
  mpfr_t t, u;
  long i, j, k, ms, m[XL_TTABS], sg;
  mpfr_init2(t, prc);
  mpfr_set(t, x, rmd);
  mpfr_init2(u, prc);
  i = sincos_quorem(t, u, rmd);
  mpfr_mul_2si(t, t, -1, rmd);
  sg = 1;
  if (mpfr_sgn(t) < 0) {
    mpfr_neg(t, t, rmd);
    sg = -1;
  }
  for (j = 0; j < XL_TTABS; j++) {
    m[j] = 0;
    for (k = XL_TRADIX - 1; k >= 0; k--) {
      if (mpfr_cmp(t, xl_tt[j][m[j] + (1L << k) - 1]) > 0) {
        m[j] += (1L << k);
      }
    }
    if (m[j] > 0) mpfr_sub(t, t, xl_tt[j][m[j] - 1], rmd);
  }
  sincos_taylor(s, c, t, 0, prc, rmd);
  for (j = 0; j < XL_TTABS; j++) {
    if (m[j] <= 0) continue;
    k = -XL_TRADIX * (j + 1) - 1;
    for (ms = m[j]; (ms & 1) == 0; ms >>= 1) k++;
    mpfr_mul_2si(t, c, k, rmd);
    mpfr_mul_2si(u, s, k, rmd);
    if (ms > 1) {
      mpfr_mul_ui(t, t, ms, rmd);
      mpfr_mul_ui(u, u, ms, rmd);
    }
    mpfr_add(s, s, t, rmd);
    mpfr_sub(c, c, u, rmd);
  }
  if (sg < 0) mpfr_neg(s, s, rmd);
  mpfr_sqr(t, c, rmd);
  mpfr_sqr(u, s, rmd);
  mpfr_add(t, t, u, rmd);
  mpfr_div(t, s, t, rmd);
  mpfr_mul_2si(t, t, 1, rmd);
  mpfr_mul(s, s, t, rmd);
  mpfr_ui_sub(s, 1, s, rmd);
  mpfr_mul(c, c, t, rmd);
  if ((i & 1) == 0) {
    mpfr_set(t, c, rmd);
    mpfr_set(c, s, rmd);
    mpfr_set(s, t, rmd);
  }
  if (i & 2) mpfr_neg(s, s, rmd);
  if ((i + 1) & 2) mpfr_neg(c, c, rmd);
  mpfr_clear(u);
  mpfr_clear(t);
}

void atan2_cordic(mpfr_t y, mpfr_t s, mpfr_t c, mpfr_t t, mpfr_t u, mp_rnd_t rmd)
{
  long j, k, m, ms;
  double td, ud;
  for (j = 0; j < XL_TTABS; j++) {
    if (mpfr_sgn(s) == 0) break;
    ud = mpfr_get_d_2exp(&k, s, rmd);
    k += XL_TRADIX * (j + 1) + 1;
    td = mpfr_get_d_2exp(&m, c, rmd);
    k -= m;
    if (k < 0) continue;
    ud *= (1L << k);
    if (ud < td) continue;
    m = 0;
    td *= (1L << k);
    for (;; k--) {
      if (ud >= td) {
        ud -= td;
        m += (1L << k);
      }
      if (k <= 0) break;
      td *= 0.5;
    }
    if (ud < 1e-14 || td - ud < 1e-14) {
      m = 0;
      k = mpfr_get_exp(s) - mpfr_get_exp(c);
      mpfr_mul_2si(t, c, k, rmd);
      mpfr_set(u, s, rmd);
      for (k += XL_TRADIX * (j + 1) + 1;; k--) {
        if (mpfr_cmp(u, t) >= 0) {
          mpfr_sub(u, u, t, rmd);
          m += (1L << k);
        }
        if (k <= 0) break;
        mpfr_mul_2si(t, t, -1, rmd);
      }
    }
    if (m > 0) {
      k = -XL_TRADIX * (j + 1) - 1;
      for (ms = m; (ms & 1) == 0; ms >>= 1) k++;
      mpfr_mul_2si(t, c, k, rmd);
      mpfr_mul_2si(u, s, k, rmd);
      if (ms > 1) {
        mpfr_mul_ui(t, t, ms, rmd);
        mpfr_mul_ui(u, u, ms, rmd);
      }
      mpfr_sub(s, s, t, rmd);
      mpfr_add(c, c, u, rmd);
      mpfr_add(y, y, xl_tt[j][m - 1], rmd);
    }
  }
}

void atan2xfr(mpfr_t y, mpfr_t s, mpfr_t c, long prc, mp_rnd_t rmd)
{
  mpfr_t st, ct, t, u;
  long y0, ys;
  mpfr_init2(st, prc);
  mpfr_abs(st, s, rmd);
  mpfr_init2(ct, prc);
  mpfr_abs(ct, c, rmd);
  y0 = 0;
  ys = 1;
  if (mpfr_sgn(c) < 0) {
    y0 = 4;
    ys = -ys;
  }
  if (mpfr_sgn(s) < 0) {
    y0 = -y0;
    ys = -ys;
  }
  mpfr_init2(t, prc);
  mpfr_init2(u, prc);
  if (mpfr_cmp(st, ct) > 0) {
    y0 += 2 * ys;
    ys = -ys;
    mpfr_set(t, st, rmd);
    mpfr_set(st, ct, rmd);
    mpfr_set(ct, t, rmd);
  }
  {
    mp_exp_t en = mpfr_get_exp(ct);
    mpfr_mul_2si(ct, ct, -en, rmd);
    mpfr_mul_2si(st, st, -en, rmd);
  }
  {
    double sd = mpfr_get_d(st, rmd);
    double cd = mpfr_get_d(ct, rmd);
    sd = sd * (sd + 2 * cd) - cd * cd;
    if (-1e-12 < sd && sd < 1e-12) {
      mpfr_sqr(t, ct, rmd);
      mpfr_mul_2si(u, ct, 1, rmd);
      mpfr_add(u, u, st, rmd);
      mpfr_mul(u, u, st, rmd);
      mpfr_sub(u, u, t, rmd);
      sd = mpfr_sgn(u);
    }
    if (sd > 0) {
      y0 += ys;
      ys = -ys;
      mpfr_sub(t, ct, st, rmd);
      mpfr_add(ct, ct, st, rmd);
      mpfr_set(st, t, rmd);
    }
  }
  mpfr_set_ui(y, 0, rmd);
  atan2_cordic(y, st, ct, t, u, rmd);
  mpfr_clear(u);
  mpfr_clear(t);
  mpfr_div(st, st, ct, rmd);
  atan_taylor(st, st, 0, prc, rmd);
  mpfr_add(y, y, st, rmd);
  if (ys < 0) mpfr_neg(y, y, rmd);
  if (y0) {
    mpfr_mul_2si(st, xl_pi_2, -1, rmd);
    mpfr_mul_si(st, st, y0, rmd);
    mpfr_add(y, y, st, rmd);
  }
  mpfr_clear(ct);
  mpfr_clear(st);
}

// end of math. func. lib.
//////////////////////////////////////////////////////////////


void f_toda_transf_00(mpfr_t y, mpfr_t t, mpfr_t w, mpfr_t e, mpfr_t ap, long prc, mp_rnd_t rmd)
// y = w Re(2 log(it+1) (it+1)/(ap+(it+1)^6 (e+1)^2/e))
{
  mpfr_t t1, t2, e1, u, u1, u2, u3, v;
  mpfr_init2(t1, prc);
  mpfr_init2(t2, prc);
  mpfr_init2(e1, prc);
  mpfr_init2(u, prc);
  mpfr_init2(u1, prc);
  mpfr_init2(u2, prc);
  mpfr_init2(u3, prc);
  mpfr_init2(v, prc);
  // t1 = t;
  // t2 = t1*t1;
  mpfr_set(t1, t, rmd);
  mpfr_sqr(t2, t1, rmd);
  // e1 = e;
  // u = e1+1;
  // u = u*u;
  // u1 = u*t2;
  // u2 = u1*t2;
  // u3 = u2*t2;
  mpfr_set(e1, e, rmd);
  mpfr_add_ui(u, e1, 1, rmd);
  mpfr_sqr(u, u, rmd);
  mpfr_mul(u1, u, t2, rmd);
  mpfr_mul(u2, u1, t2, rmd);
  mpfr_mul(u3, u2, t2, rmd);
  // v = 5*(2*u2-u1);
  mpfr_mul_2si(v, u2, 1, rmd);
  mpfr_sub(v, v, u1, rmd);
  mpfr_mul_ui(v, v, 5, rmd);
  // u1 = u1+u2;
  // u = u-u1;
  // v = v+u;
  // u = u+u3;
  // u2 = 4*(u2+u3);
  mpfr_add(u1, u1, u2, rmd);
  mpfr_sub(u, u, u1, rmd);
  mpfr_add(v, v, u, rmd);
  mpfr_add(u, u, u3, rmd);
  mpfr_add(u2, u2, u3, rmd);
  mpfr_mul_2si(u2, u2, 2, rmd);
  // u3 = ap*e1;
  // v = 4*v*u3;
  mpfr_set(u3, ap, rmd);
  mpfr_mul(u3, u3, e1, rmd);
  mpfr_mul(v, v, u3, rmd);
  mpfr_mul_2si(v, v, 2, rmd);
  // u3 = u3-u;
  // u2 = u2+u3;
  // u1 = 4*u1;
  // u3 = u3-u1;
  // v = v+u3*u3;
  mpfr_sub(u3, u3, u, rmd);
  mpfr_add(u2, u2, u3, rmd);
  mpfr_mul_2si(u1, u1, 2, rmd);
  mpfr_sub(u3, u3, u1, rmd);
  mpfr_sqr(u3, u3, rmd);
  mpfr_add(v, v, u3, rmd);
  // u1 = u2+2*(u-u1);
  // u2 = u2-4*u;
  mpfr_sub(u1, u, u1, rmd);
  mpfr_mul_2si(u1, u1, 1, rmd);
  mpfr_add(u1, u1, u2, rmd);
  mpfr_mul_2si(u, u, 2, rmd);
  mpfr_sub(u2, u2, u, rmd);
  // u1 = log(1+t2)*u1;
  mpfr_add_ui(t2, t2, 1, rmd);
  logxfr(t2, t2, prc, rmd);
  mpfr_mul(u1, u1, t2, rmd);
  // u = u1-2*atan2(t1,1)*t1*u2;
  mpfr_set_ui(u, 1, rmd);
  atan2xfr(u, t1, u, prc, rmd);
  mpfr_mul_2si(u, u, 1, rmd);
  mpfr_mul(u, u, t1, rmd);
  mpfr_mul(u, u, u2, rmd);
  mpfr_sub(u, u1, u, rmd);
  // y = w*e1*u/v;
  mpfr_div(u, u, v, rmd);
  mpfr_mul(u, u, e1, rmd);
  mpfr_set(u1, w, rmd);
  mpfr_mul(u, u, u1, rmd);
  mpfr_set(y, u, rmd);
  mpfr_clear(v);
  mpfr_clear(u3);
  mpfr_clear(u2);
  mpfr_clear(u1);
  mpfr_clear(u);
  mpfr_clear(e1);
  mpfr_clear(t2);
  mpfr_clear(t1);
}


void int_toda_00(long step, long nstep, mpfr_t s, long n, long ns, long k, long prc, mp_rnd_t rmd)
// s = Re (h/pi/a^4) sum log(it+1) (it+1)/(a^(-6)+(it+1)^6 cosh^2(at)) dt, 
// t = (b/a)sinh(nh), dt=(b/a)cosh(nh)
// a = (2*k+1)*pi/2, b = (2*k-1)*pi/2 
{
  mpfr_t ap, h, eh, e, ex, emx, u, v, t[63];
  long ka, kb, i, j, p, prc2;
#ifdef DEB_PRN
  double start = get_time_sec();
#endif
  mpfr_init2(ap, prc);
  mpfr_init2(h, prc);
  mpfr_init2(eh, prc);
  mpfr_init2(e, prc);
  mpfr_init2(ex, prc);
  mpfr_init2(emx, prc);
  mpfr_init2(u, prc);
  mpfr_init2(v, prc);
  ka = 2*k+1;
  kb = 2*k-1;
  for (i = 0; i*ns < n; i++) {
    double pd = prc-((1L<<i)-1)*2.2661800709135969*kb;
    prc2 = 4+MPFR_PREC_MIN;
    if (prc2 < pd) prc2 = (long) pd;
    mpfr_init2(t[i], prc2);
  }
  // u = ka*pi/2;
  // ap = 2/(u*u*u);
  // ap *= ap;
  mpfr_mul_ui(u, xl_pi_2, ka, rmd);
  mpfr_sqr(ap, u, rmd);
  mpfr_mul(ap, ap, u, rmd);
  mpfr_ui_div(ap, 2, ap, rmd);
  mpfr_sqr(ap, ap, rmd);
  // s = 0;
  mpfr_set_ui(s, 0, rmd);
  // h = log2/ns;
  mpfr_div_ui(h, xl_ln2, ns, rmd);
  // eh = expm1(h*nstep);
  mpfr_mul_ui(eh, h, nstep, rmd);
  expm1xfr(eh, eh, prc, rmd);
  // e = expm1(h*(step+1));
  if (step+1 == nstep) {
    mpfr_set(e, eh, rmd);
  } else {
    mpfr_mul_ui(e, h, step+1, rmd);
    expm1xfr(e, e, prc, rmd);
  }
  for (j = 1+step; j <= ns && j <= n; j += nstep) {
    // ex = 1+e;
    mpfr_add_ui(ex, e, 1, rmd);
    // e += eh*ex;
    mpfr_mul(v, eh, ex, rmd);
    mpfr_add(e, e, v, rmd);
    // emx = kb/ex;
    // ex *= kb;
    mpfr_ui_div(emx, kb, ex, rmd);
    mpfr_mul_ui(ex, ex, kb, rmd);
    // t[0] = exp(-ex*pi/2);
    mpfr_mul(u, ex, xl_pi_2, rmd);
    mpfr_neg(u, u, rmd);
    expxfr(t[0], u, prc, rmd);
    p = 0;
    for (i = j + ns; i <= n; i += ns) {
      // t[p+1] = t[p]*t[p];
      mpfr_sqr(t[p + 1], t[p], rmd);
      p++;
    }
    // u = expm1(emx*pi/2 / (1L << p));
    mpfr_mul(u, emx, xl_pi_2, rmd);
    mpfr_mul_2si(u, u, -p, rmd);
    expm1xfr(u, u, prc, rmd);
    for (;;) {
      // t[p] *= 1+u;
      mpfr_add_ui(v, u, 1, rmd);
      mpfr_mul(t[p], t[p], v, rmd);
      if (p-- <= 0) break;
      // u *= 2+u;
      mpfr_sqr(v, u, rmd);
      mpfr_mul_2si(u, u, 1, rmd);
      mpfr_add(u, u, v, rmd);
    }
    // emx /= 2*ka;
    // ex /= 2*ka;
    mpfr_div_ui(emx, emx, 2*ka, rmd);
    mpfr_div_ui(ex, ex, 2*ka, rmd);
    p = 0;
    for (i = j + ns;; i += ns) {
      // s += f_toda_transf_00(ex-emx, t[p], ap) * (ex+emx);
      mpfr_add(u, ex, emx, rmd);
      mpfr_sub(v, ex, emx, rmd);
      prc2 = prc + mpfr_get_exp(t[p]);
      if (prc2 < 4+MPFR_PREC_MIN) prc2 = 4+MPFR_PREC_MIN;
      f_toda_transf_00(u, v, u, t[p++], ap, prc2, rmd);
      mpfr_add(s, s, u, rmd);
      if (i > n) break;
      // ex *= 2;
      mpfr_mul_2si(ex, ex, 1, rmd);
      // emx /= 2;
      mpfr_mul_2si(emx, emx, -1, rmd);
    }
#ifdef DEB_PRN
    printf("i00 %ld:%ld\n", j, ns);
    if (j % 10 == 0) printf("time: %g\n", get_time_sec() - start);
#endif
  }
  // s = h*ap*ka*ka*(pi/2)*s/2;
  mpfr_mul(s, s, xl_pi_2, rmd);
  mpfr_mul(s, s, ap, rmd);
  mpfr_mul(s, s, h, rmd);
  mpfr_mul_ui(s, s, ka*ka, rmd);
  mpfr_mul_2si(s, s, -1, rmd);
  for (i = (n-1)/ns; i >= 0; i--) mpfr_clear(t[i]);
  mpfr_clear(v);
  mpfr_clear(u);
  mpfr_clear(emx);
  mpfr_clear(ex);
  mpfr_clear(e);
  mpfr_clear(eh);
  mpfr_clear(h);
  mpfr_clear(ap);
}


#ifdef N_PTH
struct int_toda_00_arg_st {
  long step;
  long nstep;
  mpfr_t s;
  long n;
  long ns;
  long k;
  long prc;
  mp_rnd_t rmd;
};
typedef struct int_toda_00_arg_st int_toda_00_arg_t;
void *int_toda_00_thread(void *p) {
  int_toda_00(
              ((int_toda_00_arg_t *) p)->step, 
              ((int_toda_00_arg_t *) p)->nstep, 
              ((int_toda_00_arg_t *) p)->s, 
              ((int_toda_00_arg_t *) p)->n, 
              ((int_toda_00_arg_t *) p)->ns, 
              ((int_toda_00_arg_t *) p)->k, 
              ((int_toda_00_arg_t *) p)->prc, 
              ((int_toda_00_arg_t *) p)->rmd);
  return (void *) 0;
}
#endif


void f_toda_transf_01(mpfr_t y, mpfr_t x, mpfr_t sq3, long prc, mp_rnd_t rmd)
{
  mpfr_t s, t, ur, ui, v, w;
  // sq3 = sqrt(3);
  mpfr_init2(s, prc);
  mpfr_init2(t, prc);
  mpfr_init2(ur, prc);
  mpfr_init2(ui, prc);
  mpfr_init2(v, prc);
  mpfr_init2(w, prc);
  // t = x*x;
  mpfr_sqr(t, x, rmd);
  // s = t*t;
  mpfr_sqr(s, t, rmd);
  // w = sqrt(1+t+s);
  mpfr_add(w, t, s, rmd);
  mpfr_add_ui(w, w, 1, rmd);
  mpfr_sqrt(w, w, rmd);
  // t = t*s/2;
  mpfr_mul(t, t, s, rmd);
  mpfr_mul_2si(t, t, -1, rmd);
  // s = exp(x);
  expxfr(s, x, prc, rmd);
  // v = t*s;
  // ui = v*sq3*sin(sq3*x);
  // ur = v*cos(sq3*x)-t;
  mpfr_mul(ui, x, sq3, rmd);
  sincosxfr(ui, ur, ui, prc, rmd);
  mpfr_mul(ui, ui, sq3, rmd);
  mpfr_mul(v, t, s, rmd);
  mpfr_mul(ui, ui, v, rmd);
  mpfr_mul(ur, ur, v, rmd);
  mpfr_sub(ur, ur, t, rmd);
  // s = (s*s-1)/2;
  mpfr_sqr(s, s, rmd);
  mpfr_sub_ui(s, s, 1, rmd);
  mpfr_mul_2si(s, s, -1, rmd);
  // t = t*s;
  // v = ur-t+1;
  mpfr_mul(t, t, s, rmd);
  mpfr_sub(v, ur, t, rmd);
  mpfr_add_ui(v, v, 1, rmd);
  // ur = ur*s;
  // ui = ur+(ui-t)*(v+s);
  mpfr_mul(ur, ur, s, rmd);
  mpfr_add(y, v, s, rmd);
  mpfr_sub(ui, ui, t, rmd);
  mpfr_mul(ui, ui, y, rmd);
  mpfr_add(ui, ui, ur, rmd);
  // ur = 2*(ur+s)+v*v;
  mpfr_add(ur, ur, s, rmd);
  mpfr_mul_2si(ur, ur, 1, rmd);
  mpfr_sqr(v, v, rmd);
  mpfr_add(ur, ur, v, rmd);
  // v = t*s;
  // t = 2*t+v;
  // ui = ui+t;
  mpfr_mul(v, t, s, rmd);
  mpfr_mul_2si(t, t, 1, rmd);
  mpfr_add(t, t, v, rmd);
  mpfr_add(ui, ui, t, rmd);
  // s = 2*(s+v)+1;
  // t = t+v;
  mpfr_add(s, s, v, rmd);
  mpfr_mul_2si(s, s, 1, rmd);
  mpfr_add_ui(s, s, 1, rmd);
  mpfr_add(t, t, v, rmd);
  // y = x*(t*ur+s*ui)/(w*s*ur);
  mpfr_mul(t, t, ur, rmd);
  mpfr_mul(ui, ui, s, rmd);
  mpfr_add(ui, ui, t, rmd);
  mpfr_mul(ui, ui, x, rmd);
  mpfr_mul(ur, ur, s, rmd);
  mpfr_mul(ur, ur, w, rmd);
  mpfr_div(y, ui, ur, rmd);
  mpfr_clear(w);
  mpfr_clear(v);
  mpfr_clear(ui);
  mpfr_clear(ur);
  mpfr_clear(t);
  mpfr_clear(s);
}


void int_toda_01(long step, long nstep, mpfr_t s, long n, mpfr_t sq3, long prc, mp_rnd_t rmd)
{
  mpfr_t h, ss, x, y, t;
  long j;
#ifdef DEB_PRN
  double start = get_time_sec();
#endif
  // sq3 = sqrt(3);
  mpfr_init2(h, prc);
  mpfr_init2(ss, prc);
  mpfr_init2(x, prc);
  mpfr_init2(y, prc+16);
  mpfr_init2(t, prc);
  // h = pi/(4*n);
  mpfr_div_ui(h, xl_pi_2, 2*n, rmd);
  // ss = sin(h*nstep);
  // x = cos(h*nstep);
  mpfr_mul_ui(ss, h, nstep, rmd);
  sincosxfr(ss, x, ss, prc, rmd);
  // y = ss*cos(h*(2+2*step-nstep));
  // x = x*sin(h*(2+2*step-nstep))-y;
  if (2+2*step-nstep == nstep) {
    mpfr_mul(y, x, ss, rmd);
    mpfr_set_ui(x, 0, rmd);
  } else {
    mpfr_mul_si(t, h, 2+2*step-nstep, rmd);
    sincosxfr(t, y, t, prc, rmd);
    mpfr_mul(y, y, ss, rmd);
    mpfr_mul(x, x, t, rmd);
    mpfr_sub(x, x, y, rmd);
  }
  // y *= 2;
  // ss *= 4*ss;
  mpfr_mul_2si(y, y, 1, rmd);
  mpfr_mul_2si(ss, ss, 1, rmd);
  mpfr_sqr(ss, ss, rmd);
  // s = 0;
  mpfr_set_ui(s, 0, rmd);
  for (j = 1+step; j < n; j += nstep) {
    // x += y;
    // y -= ss * x;
    mpfr_add(x, x, y, rmd);
    mpfr_mul(t, ss, x, rmd);
    mpfr_sub(y, y, t, rmd);
    //// x = sin(2*h*j);
    // s += f_toda_transf_01(x);
    f_toda_transf_01(t, x, sq3, prc, rmd);
    mpfr_add(s, s, t, rmd);
#ifdef DEB_PRN
    if (j % 10 == 0) {
      printf("i01 %ld:%ld\n", j, n);
      if (j % 100 == 0) printf("time: %g\n", get_time_sec() - start);
    }
#endif
  }
  // s = h*(2*s + f_toda_transf_01(1));
  mpfr_mul_2si(s, s, 1, rmd);
  if (step == 0) {
    mpfr_set_ui(x, 1, rmd);
    f_toda_transf_01(t, x, sq3, prc, rmd);
    mpfr_add(s, s, t, rmd);
  }
  mpfr_mul(s, s, h, rmd);
  mpfr_clear(t);
  mpfr_clear(y);
  mpfr_clear(x);
  mpfr_clear(ss);
  mpfr_clear(h);
}


#ifdef N_PTH
struct int_toda_01_arg_st {
  long step;
  long nstep;
  mpfr_t s;
  long n;
  mpfr_t sq3;
  long prc;
  mp_rnd_t rmd;
};
typedef struct int_toda_01_arg_st int_toda_01_arg_t;
void *int_toda_01_thread(void *p) {
  int_toda_01(
              ((int_toda_01_arg_t *) p)->step, 
              ((int_toda_01_arg_t *) p)->nstep, 
              ((int_toda_01_arg_t *) p)->s, 
              ((int_toda_01_arg_t *) p)->n, 
              ((int_toda_01_arg_t *) p)->sq3, 
              ((int_toda_01_arg_t *) p)->prc, 
              ((int_toda_01_arg_t *) p)->rmd);
  return (void *) 0;
}
#endif


long root_f_toda_00_init(mpfr_t xr, mpfr_t xi, long n, long prc, mp_rnd_t rmd)
{
  mpfr_t r, s, t, u, v;
  long p = 0;
  double a;
  for (a = 2.2411899539*n; a >= 2; a *= 0.5) p += 19;
  for (; a >= 1; a *= 0.9641759979) p++;
  if (p > prc) p = prc;
  // r = 1/(n*pi);
  // x = i*r^3+3*r^7-i/6*r^9-i*15*r^11-2*r^13+(-91+i*3/40)*r^15+i*20*r^17;
  mpfr_init2(r, p);
  mpfr_init2(s, p);
  mpfr_init2(t, p);
  mpfr_init2(u, p);
  mpfr_init2(v, p);
  // r = 1/(n*pi);
  mpfr_mul_ui(r, xl_pi_2, 2*n, rmd);
  mpfr_ui_div(r, 1, r, rmd);
  // t = r*r; // t = 1/(n*pi)^2
  mpfr_sqr(t, r, rmd);
  // s = r*t; // s = 1/(n*pi)^3
  mpfr_mul(s, r, t, rmd);
  // u = s*s; // u = 1/(n*pi)^6
  mpfr_sqr(u, s, rmd);
  // xr = r*(u*(3-u*(2+t*91)));
  mpfr_mul_ui(v, t, 91, rmd);
  mpfr_add_ui(v, v, 2, rmd);
  mpfr_mul(v, v, u, rmd);
  mpfr_ui_sub(v, 3, v, rmd);
  mpfr_mul(v, v, u, rmd);
  mpfr_mul(xr, r, v, rmd);
  // xi = s*(1-(1/480)*u*(53+(9+t*2400)*(3-u*4)));
  mpfr_mul_ui(t, t, 2400, rmd);
  mpfr_add_ui(t, t, 9, rmd);
  mpfr_mul_2si(v, u, 2, rmd);
  mpfr_ui_sub(v, 3, v, rmd);
  mpfr_mul(v, v, t, rmd);
  mpfr_add_ui(v, v, 53, rmd);
  mpfr_mul(v, v, u, rmd);
  mpfr_div_ui(v, v, 480, rmd);
  mpfr_ui_sub(v, 1, v, rmd);
  mpfr_mul(xi, s, v, rmd);
  mpfr_clear(v);
  mpfr_clear(u);
  mpfr_clear(t);
  mpfr_clear(s);
  mpfr_clear(r);
  p--;
  if (p < 4+MPFR_PREC_MIN) p = 4+MPFR_PREC_MIN;
  return p;
}


void root_f_toda_00(mpfr_t xr, mpfr_t xi, mpfr_t rr, mpfr_t ri, int s1, long n, long prc0, long prc, mp_rnd_t rmd)
{
  mpfr_t s, tr, ti, ur, ui, vr, vi, wr, wi, yr, yi, zr, zi, z2r, z2i, z4r, z4i, zs;
  long d, p, j;
  mpfr_init2(z2r, prc);
  mpfr_init2(z2i, prc);
  mpfr_init2(z4r, prc);
  mpfr_init2(z4i, prc);
  mpfr_init2(zs, prc);
  mpfr_init2(s, prc);
  mpfr_init2(tr, prc);
  mpfr_init2(ti, prc);
  mpfr_init2(ur, prc);
  mpfr_init2(ui, prc);
  mpfr_init2(vr, prc);
  mpfr_init2(vi, prc);
  mpfr_init2(wr, prc);
  mpfr_init2(wi, prc);
  mpfr_init2(yr, prc);
  mpfr_init2(yi, prc);
  mpfr_init2(zr, prc);
  mpfr_init2(zi, prc);
  for (d = 1; prc > 3*prc0*d; d *= 3);
  for(;;) {
    p = 16+prc/d;
    if (p > prc) p = prc;
    mpfr_set_prec(zr, p);
    mpfr_set_prec(zi, p);
    mpfr_set_prec(yr, p);
    mpfr_set_prec(yi, p);
    mpfr_set_prec(wr, p);
    mpfr_set_prec(wi, p);
    mpfr_set_prec(vr, p);
    mpfr_set_prec(vi, p);
    mpfr_set_prec(ur, p);
    mpfr_set_prec(ui, p);
    mpfr_set_prec(tr, p);
    mpfr_set_prec(ti, p);
    mpfr_set_prec(s, p);
    //// z = x;
    //// s = exp(im(z));
    //// w = cos(z)*s;
    //// v = sin(z)*s;
    // zr = xr;
    // zi = xi;
    // s = exp(zi);
    mpfr_set(zr, xr, rmd);
    mpfr_set(zi, xi, rmd);
    expxfr(s, zi, p, rmd);
    // vi = (s*s-1)/2;
    // vr = sin(zr);
    // wr = cos(zr);
    // wi = -vr*vi;
    // vi *= wr;
    // wr += vi;
    // vr -= wi;
    mpfr_sqr(vi, s, rmd);
    mpfr_sub_ui(vi, vi, 1, rmd);
    mpfr_mul_2si(vi, vi, -1, rmd);
    sincosxfr(vr, wr, zr, p, rmd);
    mpfr_mul(wi, vr, vi, rmd);
    mpfr_neg(wi, wi, rmd);
    mpfr_mul(vi, vi, wr, rmd);
    mpfr_add(wr, wr, vi, rmd);
    mpfr_sub(vr, vr, wi, rmd);
    //// z = z + n*pi;
    mpfr_mul_ui(tr, xl_pi_2, 2*n, rmd);
    mpfr_add(zr, zr, tr, rmd);
    //// t = z*z;
    // tr = (zr+zi)*(zr-zi);
    // ti = 2*zr*zi;
    mpfr_add(tr, zr, zi, rmd);
    mpfr_sub(ti, zr, zi, rmd);
    mpfr_mul(tr, tr, ti, rmd);
    mpfr_mul(ti, zr, zi, rmd);
    mpfr_mul_2si(ti, ti, 1, rmd);
    //// u = t*t * i*sgn(s1);
    // ui = sgn(s1)*((tr+ti)*(tr-ti));
    // ur = -2*sgn(s1)*(tr*ti);
    mpfr_add(ur, tr, ti, rmd);
    mpfr_sub(ui, tr, ti, rmd);
    mpfr_mul(ui, ui, ur, rmd);
    mpfr_mul(ur, tr, ti, rmd);
    mpfr_mul_2si(ur, ur, 1, rmd);
    if (d == 1) {
      mpfr_set(z2r, tr, rmd);
      mpfr_set(z2i, ti, rmd);
      mpfr_set(z4r, ui, rmd);
      mpfr_set(z4i, ur, rmd);
      mpfr_set(zs, s, rmd);
    }
    if (s1 < 0) {
      mpfr_neg(ui, ui, rmd);
    } else {
      mpfr_neg(ur, ur, rmd);
    }
    //// w = 3*s+u*w;
    // yr = ur-ui;
    // yi = ur+ui;
    // ur = (wr+wi)*ui;
    // wr = 3*s + (wr*yi-ur);
    // wi = wi*yr+ur;
    mpfr_sub(yr, ur, ui, rmd);
    mpfr_add(yi, ur, ui, rmd);
    mpfr_add(ur, wr, wi, rmd);
    mpfr_mul(ur, ur, ui, rmd);
    mpfr_mul(wr, wr, yi, rmd);
    mpfr_sub(wr, wr, ur, rmd);
    mpfr_mul(wi, wi, yr, rmd);
    mpfr_add(wi, wi, ur, rmd);
    mpfr_mul_ui(ur, s, 3, rmd);
    mpfr_add(wr, wr, ur, rmd);
    if (d == 1) {
      mpfr_set(rr, wr, rmd);
      mpfr_set(ri, wi, rmd);
    }
    //// v = z*s-u*v;
    // ur = (vr-vi)*ui;
    // vr = s*zr - (vr*yr+ur);
    // vi = s*zi - (vi*yi+ur);
    mpfr_sub(ur, vr, vi, rmd);
    mpfr_mul(ur, ur, ui, rmd);
    mpfr_mul(vr, vr, yr, rmd);
    mpfr_add(vr, vr, ur, rmd);
    mpfr_mul(vi, vi, yi, rmd);
    mpfr_add(vi, vi, ur, rmd);
    mpfr_mul(ur, zr, s, rmd);
    mpfr_sub(vr, ur, vr, rmd);
    mpfr_mul(ui, zi, s, rmd);
    mpfr_sub(vi, ui, vi, rmd);
    p = p*2/3;
    if (p < 4+MPFR_PREC_MIN) p = 4+MPFR_PREC_MIN;
    mpfr_prec_round(zr, p, rmd);
    mpfr_prec_round(zi, p, rmd);
    mpfr_set_prec(yr, p);
    mpfr_set_prec(yi, p);
    mpfr_prec_round(wr, p, rmd);
    mpfr_prec_round(wi, p, rmd);
    mpfr_prec_round(vr, p, rmd);
    mpfr_prec_round(vi, p, rmd);
    mpfr_set_prec(ur, p);
    mpfr_set_prec(ui, p);
    mpfr_prec_round(tr, p, rmd);
    mpfr_prec_round(ti, p, rmd);
    mpfr_prec_round(s, p, rmd);
    //// z = 2*z*w;
    // yr = wr-wi;
    // yi = wr+wi;
    // wr = (zr-zi)*wi;
    // zr = 2*(zr*yr+wr);
    // zi = 2*(zi*yi+wr);
    mpfr_sub(yr, wr, wi, rmd);
    mpfr_add(yi, wr, wi, rmd);
    mpfr_sub(wr, zr, zi, rmd);
    mpfr_mul(wr, wr, wi, rmd);
    mpfr_mul(zr, zr, yr, rmd);
    mpfr_add(zr, zr, wr, rmd);
    mpfr_mul_2si(zr, zr, 1, rmd);
    mpfr_mul(zi, zi, yi, rmd);
    mpfr_add(zi, zi, wr, rmd);
    mpfr_mul_2si(zi, zi, 1, rmd);
    //// u = z*w;
    // wr = (zr-zi)*wi;
    // ur = zr*yr+wr;
    // ui = zi*yi+wr;
    mpfr_sub(wr, zr, zi, rmd);
    mpfr_mul(wr, wr, wi, rmd);
    mpfr_mul(ur, zr, yr, rmd);
    mpfr_add(ur, ur, wr, rmd);
    mpfr_mul(ui, zi, yi, rmd);
    mpfr_add(ui, ui, wr, rmd);
    //// t = (12+t)*s;
    // tr = (12+tr)*s;
    // ti = ti*s;
    mpfr_add_ui(tr, tr, 12, rmd);
    mpfr_mul(tr, tr, s, rmd);
    mpfr_mul(ti, ti, s, rmd);
    //// u -= t*v;
    // yr = vr-vi;
    // yi = vr+vi;
    // vr = (tr-ti)*vi;
    // ur -= tr*yr+vr;
    // ui -= ti*yi+vr;
    mpfr_sub(yr, vr, vi, rmd);
    mpfr_add(yi, vr, vi, rmd);
    mpfr_sub(vr, tr, ti, rmd);
    mpfr_mul(vr, vr, vi, rmd);
    mpfr_mul(wr, tr, yr, rmd);
    mpfr_add(wr, wr, vr, rmd);
    mpfr_sub(ur, ur, wr, rmd);
    mpfr_mul(wi, ti, yi, rmd);
    mpfr_add(wi, wi, vr, rmd);
    mpfr_sub(ui, ui, wi, rmd);
    //// z = z*v;
    // vr = (zr-zi)*vi;
    // zr = zr*yr+vr;
    // zi = zi*yi+vr;
    mpfr_sub(vr, zr, zi, rmd);
    mpfr_mul(vr, vr, vi, rmd);
    mpfr_mul(zr, zr, yr, rmd);
    mpfr_add(zr, zr, vr, rmd);
    mpfr_mul(zi, zi, yi, rmd);
    mpfr_add(zi, zi, vr, rmd);
    //// z = z/u;
    // wr = 1/(ur*ur+ui*ui);
    mpfr_sqr(wr, ur, rmd);
    mpfr_sqr(wi, ui, rmd);
    mpfr_add(wr, wr, wi, rmd);
    mpfr_ui_div(wr, 1, wr, rmd);
    // yr = ur-ui;
    // yi = ur+ui;
    // ur = (zr+zi)*ui;
    // zr = wr*(zr*yr+ur);
    // zi = wr*(zi*yi-ur);
    mpfr_sub(yr, ur, ui, rmd);
    mpfr_add(yi, ur, ui, rmd);
    mpfr_add(ur, zr, zi, rmd);
    mpfr_mul(ur, ur, ui, rmd);
    mpfr_mul(zr, zr, yr, rmd);
    mpfr_add(zr, zr, ur, rmd);
    mpfr_mul(zr, zr, wr, rmd);
    mpfr_mul(zi, zi, yi, rmd);
    mpfr_sub(zi, zi, ur, rmd);
    mpfr_mul(zi, zi, wr, rmd);
    //// x += z;
    // xr += zr;
    // xi += zi;
    mpfr_add(xr, xr, zr, rmd);
    mpfr_add(xi, xi, zi, rmd);
    // ur = abs(zr)+abs(zi);
    mpfr_abs(ur, zr, rmd);
    mpfr_abs(ui, zi, rmd);
    mpfr_add(ur, ur, ui, rmd);
    if (d == 1) {
      if (mpfr_cmp_ui_2exp(ur, 1, -prc/3) <= 0) break;
    } else {
      for (j = 1; d > 3*j; j *= 3);
      if (mpfr_cmp_ui_2exp(ur, 1, -prc/(9*j)) <= 0) d = j;
    }
  }
  p /= 2;
  if (p < 4+MPFR_PREC_MIN) p = 4+MPFR_PREC_MIN;
  mpfr_set_prec(ur, p);
  mpfr_set_prec(ui, p);
  mpfr_prec_round(s, p, rmd);
  //// x = root of 1-i*sgn(s1)*(x+n*pi)^3*sin(x);
  //// r = x^2/w;
  //// u = z*z;
  // ur = (zr+zi)*(zr-zi);
  // ui = 2*zr*zi;
  mpfr_add(ur, zr, zi, rmd);
  mpfr_sub(ui, zr, zi, rmd);
  mpfr_mul(ur, ur, ui, rmd);
  mpfr_mul(ui, zr, zi, rmd);
  mpfr_mul_2si(ui, ui, 1, rmd);
  //// z = x + n*pi;
  mpfr_set_prec(zr, prc);
  mpfr_set_prec(zi, prc);
  mpfr_set(zr, xr, rmd);
  mpfr_mul_ui(zi, xl_pi_2, 2*n, rmd);
  mpfr_add(zr, zr, zi, rmd);
  mpfr_set(zi, xi, rmd);
  //// v = z*z;
  // vr = (zr+zi)*(zr-zi);
  // vi = 2*zr*zi;
  mpfr_set_prec(vr, prc);
  mpfr_set_prec(vi, prc);
  mpfr_add(vr, zr, zi, rmd);
  mpfr_sub(vi, zr, zi, rmd);
  mpfr_mul(vr, vr, vi, rmd);
  mpfr_mul(vi, zr, zi, rmd);
  mpfr_mul_2si(vi, vi, 1, rmd);
  //// w = 24*u*s-t*(v-z2);
  mpfr_sub(wr, vr, z2r, rmd);
  mpfr_sub(wi, vi, z2i, rmd);
  // yr = wr-wi;
  // yi = wr+wi;
  // wr = (tr-ti)*wi;
  // tr = tr*yr+wr;
  // ti = ti*yi+wr;
  mpfr_sub(yr, wr, wi, rmd);
  mpfr_add(yi, wr, wi, rmd);
  mpfr_sub(wr, tr, ti, rmd);
  mpfr_mul(wr, wr, wi, rmd);
  mpfr_mul(tr, tr, yr, rmd);
  mpfr_add(tr, tr, wr, rmd);
  mpfr_mul(ti, ti, yi, rmd);
  mpfr_add(ti, ti, wr, rmd);
  // wr = 24*s*ur - tr;
  // wi = 24*s*ui - ti;
  mpfr_mul_ui(wi, s, 24, rmd);
  mpfr_mul(wr, ur, wi, rmd);
  mpfr_mul(wi, ui, wi, rmd);
  mpfr_sub(wr, wr, tr, rmd);
  mpfr_sub(wi, wi, ti, rmd);
  //// v = 2*v+u*v;
  // yr = vr-vi;
  // yi = vr+vi;
  // tr = (ur-ui)*vi;
  // vr = 2*vr + (ur*yr+tr);
  // vi = 2*vi + (ui*yi+tr);
  mpfr_sub(yr, vr, vi, rmd);
  mpfr_add(yi, vr, vi, rmd);
  mpfr_sub(tr, ur, ui, rmd);
  mpfr_mul(tr, tr, vi, rmd);
  mpfr_mul(ur, ur, yr, rmd);
  mpfr_add(ur, ur, tr, rmd);
  mpfr_mul_2si(vr, vr, 1, rmd);
  mpfr_add(vr, vr, ur, rmd);
  mpfr_mul(ui, ui, yi, rmd);
  mpfr_add(ui, ui, tr, rmd);
  mpfr_mul_2si(vi, vi, 1, rmd);
  mpfr_add(vi, vi, ui, rmd);
  //// r = r*v;
  mpfr_set_prec(yr, prc);
  mpfr_set_prec(yi, prc);
  // yr = vr-vi;
  // yi = vr+vi;
  // vr = (rr-ri)*vi;
  // rr = rr*yr+vr;
  // ri = ri*yi+vr;
  mpfr_sub(yr, vr, vi, rmd);
  mpfr_add(yi, vr, vi, rmd);
  mpfr_sub(vr, rr, ri, rmd);
  mpfr_mul(vr, vr, vi, rmd);
  mpfr_mul(rr, rr, yr, rmd);
  mpfr_add(rr, rr, vr, rmd);
  mpfr_mul(ri, ri, yi, rmd);
  mpfr_add(ri, ri, vr, rmd);
  //// r = 2*zs*z4/(r+w);
  mpfr_add(rr, rr, wr, rmd);
  mpfr_add(ri, ri, wi, rmd);
  mpfr_sqr(vr, rr, rmd);
  mpfr_sqr(vi, ri, rmd);
  mpfr_add(vi, vi, vr, rmd);
  mpfr_div(vi, zs, vi, rmd);
  mpfr_mul_2si(vi, vi, 1, rmd);
  // yr = z4r-z4i;
  // yi = z4r+z4i;
  // vr = (rr+ri)*z4i;
  // rr = vi*(rr*yr+vr);
  // ri = vi*(-ri*yi+vr);
  mpfr_sub(yr, z4r, z4i, rmd);
  mpfr_add(yi, z4r, z4i, rmd);
  mpfr_add(vr, rr, ri, rmd);
  mpfr_mul(vr, vr, z4i, rmd);
  mpfr_mul(rr, rr, yr, rmd);
  mpfr_add(rr, rr, vr, rmd);
  mpfr_mul(rr, rr, vi, rmd);
  mpfr_mul(ri, ri, yi, rmd);
  mpfr_sub(ri, vr, ri, rmd);
  mpfr_mul(ri, ri, vi, rmd);
  mpfr_clear(zi);
  mpfr_clear(zr);
  mpfr_clear(yi);
  mpfr_clear(yr);
  mpfr_clear(wi);
  mpfr_clear(wr);
  mpfr_clear(vi);
  mpfr_clear(vr);
  mpfr_clear(ui);
  mpfr_clear(ur);
  mpfr_clear(ti);
  mpfr_clear(tr);
  mpfr_clear(s);
  mpfr_clear(zs);
  mpfr_clear(z4i);
  mpfr_clear(z4r);
  mpfr_clear(z2i);
  mpfr_clear(z2r);
}


void fix_f_toda_00_init(mpfr_t ph, mpfr_t a, mpfr_t al, mpfr_t b2, long ns, long k, long prc, mp_rnd_t rmd)
{
  // h = log2/ns;
  // ph = pi/h;
  // a = (2*k+1)*pi/2;
  mpfr_div(ph, xl_pi_2, xl_ln2, rmd);
  mpfr_mul_ui(ph, ph, 2*ns, rmd);
  mpfr_mul_ui(a, xl_pi_2, 2*k+1, rmd);
  // al = 2*log(a);
  logxfr(al, a, prc, rmd);
  mpfr_mul_2si(al, al, 1, rmd);
  // b = (2*k-1)*pi/2;
  // b2 = b*b;
  mpfr_mul_ui(b2, xl_pi_2, 2*k-1, rmd);
  mpfr_sqr(b2, b2, rmd);
}

void fix_f_toda_00(mpfr_t s, mpfr_t xr, mpfr_t xi, mpfr_t rr, mpfr_t ri, mpfr_t ph, mpfr_t a, mpfr_t al, mpfr_t b2, long prc, mp_rnd_t rmd)
{
  mpfr_t ss, tr, ti, ur, ui;
  long p;
  double dp;
  mpfr_init2(ss, prc);
  mpfr_init2(tr, prc);
  mpfr_init2(ti, prc);
  mpfr_init2(ur, prc);
  mpfr_init2(ui, prc);
  //// t=(x-a)/i, y=log((t+sqrt(b^2+t^2))/b);
  //// return 2*re(r*log(x/a)/(1-exp(2*ph*i*y)));
  // ti = a-xr;
  mpfr_sub(ti, a, xr, rmd);
  //// u = ph*2*log(t+sqrt(b2+t*t));
  // tr = xi*xi;
  mpfr_set(tr, xi, rmd);
  mpfr_sqr(tr, tr, rmd);
  // ur = (tr+ti*ti-b2)/2;
  mpfr_sqr(ur, ti, rmd);
  mpfr_sub(ur, ur, b2, rmd);
  mpfr_add(ur, ur, tr, rmd);
  mpfr_mul_2si(ur, ur, -1, rmd);
  // ur = sqrt(ur*ur+tr*b2)-ur;
  mpfr_sqr(ui, ur, rmd);
  mpfr_set(ss, b2, rmd);
  mpfr_mul(ss, ss, tr, rmd);
  mpfr_add(ui, ui, ss, rmd);
  mpfr_sqrt(ui, ui, rmd);
  mpfr_sub(ur, ui, ur, rmd);
  // ui = sqrt(ur+tr);
  mpfr_add(ui, ur, tr, rmd);
  mpfr_sqrt(ui, ui, rmd);
  // ur = 1+2*(xi+ui)*xi/ur;
  mpfr_set(tr, xi, rmd);
  mpfr_div(ur, tr, ur, rmd);
  mpfr_add(tr, tr, ui, rmd);
  mpfr_mul(ur, ur, tr, rmd);
  mpfr_mul_2si(ur, ur, 1, rmd);
  mpfr_add_si(ur, ur, 1, rmd);
  // ur = ph*log(ur);
  // ui = ph*atan2(ti, ui)*2;
  logxfr(ur, ur, prc, rmd);
  mpfr_set(ss, ph, rmd);
  mpfr_mul(ur, ur, ss, rmd);
  atan2xfr(ui, ti, ui, prc, rmd);
  mpfr_mul(ui, ui, ss, rmd);
  mpfr_mul_2si(ui, ui, 1, rmd);
  //// t = exp(ui)-exp(-i*ur);
  //// ss = exp(ui)/(t*conj(t));
  p = prc;
  dp = mpfr_get_d(ui, rmd);
  if (dp > 0) {
    p += 64 - (long) (dp * 1.4426950408889634073599246810019);
    if (p < 64+MPFR_PREC_MIN) p = 64+MPFR_PREC_MIN;
    if (p > prc) p = prc;
  }
  // ti = sin(ur);
  // ur = cos(ur);
  sincosxfr(ti, ur, ur, p, rmd);
  // ui = exp(ui);
  // tr = ui-ur;
  expxfr(ui, ui, p, rmd);
  mpfr_sub(tr, ui, ur, rmd);
  // ss = ui/(1-(ur-tr)*ui);
  mpfr_sub(ur, ur, tr, rmd);
  mpfr_mul(ur, ur, ui, rmd);
  mpfr_ui_sub(ur, 1, ur, rmd);
  mpfr_div(ss, ui, ur, rmd);
  //// u = r*t;
  // ur = tr*(rr-ri);
  // ui = ti*(rr+ri);
  // tr = (tr-ti)*ri;
  // ur = ur+tr;
  // ui = ui+tr;
  mpfr_sub(ur, rr, ri, rmd);
  mpfr_mul(ur, ur, tr, rmd);
  mpfr_add(ui, rr, ri, rmd);
  mpfr_mul(ui, ui, ti, rmd);
  mpfr_sub(tr, tr, ti, rmd);
  mpfr_set(ti, ri, rmd);
  mpfr_mul(tr, tr, ti, rmd);
  mpfr_add(ur, ur, tr, rmd);
  mpfr_add(ui, ui, tr, rmd);
  //// s = ss*re(2*log(x/a)*u);
  // tr = ur*(log(xr*xr+xi*xi)-al);
  mpfr_set(tr, xr, rmd);
  mpfr_sqr(tr, tr, rmd);
  mpfr_set(ti, xi, rmd);
  mpfr_sqr(ti, ti, rmd);
  mpfr_add(tr, tr, ti, rmd);
  logxfr(tr, tr, prc, rmd);
  mpfr_sub(tr, tr, al, rmd);
  mpfr_mul(tr, tr, ur, rmd);
  // ti = ui*atan2(xi, xr)*2;
  mpfr_set(ti, xi, rmd);
  mpfr_set(ur, xr, rmd);
  atan2xfr(ti, ti, ur, prc, rmd);
  mpfr_mul_2si(ti, ti, 1, rmd);
  mpfr_mul(ti, ti, ui, rmd);
  // s *= tr-ti;
  mpfr_sub(tr, tr, ti, rmd);
  mpfr_mul(ss, ss, tr, rmd);
  mpfr_set(s, ss, rmd);
  mpfr_clear(ui);
  mpfr_clear(ur);
  mpfr_clear(ti);
  mpfr_clear(tr);
  mpfr_clear(ss);
}

void fix_f_toda_00_sum(long step, long nstep, mpfr_t s, long k, mpfr_t ph, mpfr_t a, mpfr_t al, mpfr_t b2, long prc, mp_rnd_t rmd)
{
  mpfr_t xr, xi, rr, ri, t;
  long j, prc0, p;
  mpfr_set_ui(s, 0, rmd);
  p = prc;
  for (j = 1+step; j <= 2 * k; j += nstep) {
    if (j > k) {
      double u = (j - k - 0.5) / (k - 0.5);
      u = atan2(u, sqrt(1 - u * u));
      u *= 2 * mpfr_get_d(ph, rmd);
      p = prc + 4 - (long)(u * 1.4426950408889634073599246810019);
      if (p < 64+MPFR_PREC_MIN) p = 64+MPFR_PREC_MIN;
      if (p > prc) p = prc;
    }
    mpfr_init2(xr, p);
    mpfr_init2(xi, p);
    mpfr_init2(rr, p);
    mpfr_init2(ri, p);
    mpfr_init2(t, p);
    prc0 = root_f_toda_00_init(xr, xi, j, p, rmd);
    root_f_toda_00(xr, xi, rr, ri, -1, j, prc0, p, rmd);
    mpfr_mul_ui(t, xl_pi_2, 2 * j, rmd);
    mpfr_add(xr, xr, t, rmd);
    fix_f_toda_00(t, xr, xi, rr, ri, ph, a, al, b2, p, rmd);
    mpfr_add(s, s, t, rmd);
#ifdef DEB_PRN
    printf("f00 %ld:%ld\n", j, 2 * k);
#endif
    mpfr_clear(t);
    mpfr_clear(ri);
    mpfr_clear(rr);
    mpfr_clear(xi);
    mpfr_clear(xr);
  }
}

#ifdef N_PTH
struct fix_f_toda_00_sum_arg_st {
  long step;
  long nstep;
  mpfr_t s;
  long k;
  mpfr_t ph;
  mpfr_t a;
  mpfr_t al;
  mpfr_t b2;
  long prc;
  mp_rnd_t rmd;
};
typedef struct fix_f_toda_00_sum_arg_st fix_f_toda_00_sum_arg_t;
void *fix_f_toda_00_sum_thread(void *p) {
  fix_f_toda_00_sum(
                    ((fix_f_toda_00_sum_arg_t *) p)->step, 
                    ((fix_f_toda_00_sum_arg_t *) p)->nstep, 
                    ((fix_f_toda_00_sum_arg_t *) p)->s, 
                    ((fix_f_toda_00_sum_arg_t *) p)->k, 
                    ((fix_f_toda_00_sum_arg_t *) p)->ph, 
                    ((fix_f_toda_00_sum_arg_t *) p)->a, 
                    ((fix_f_toda_00_sum_arg_t *) p)->al, 
                    ((fix_f_toda_00_sum_arg_t *) p)->b2, 
                    ((fix_f_toda_00_sum_arg_t *) p)->prc, 
                    ((fix_f_toda_00_sum_arg_t *) p)->rmd);
  return (void *) 0;
}
#endif


void fix_f_toda_01(mpfr_t s, mpfr_t xr, mpfr_t xi, mpfr_t rr, mpfr_t ri, mpfr_t sq3, int s1, long n, long prc, mp_rnd_t rmd)
{
  mpfr_t t, v, ur, ui, yr, yi;
  long j;
  mpfr_init2(t, prc);
  mpfr_init2(v, prc);
  mpfr_init2(ur, prc);
  mpfr_init2(ui, prc);
  mpfr_init2(yr, prc);
  mpfr_init2(yi, prc);
  if (s1) {
    //// sq3 = sqrt(3);
    //// u = x*(1+sq3*i)/2;
    // ur = (xr-sq3*xi)/2;
    // ui = (xi+sq3*xr)/2;
    mpfr_mul(ur, xi, sq3, rmd);
    mpfr_sub(ur, xr, ur, rmd);
    mpfr_mul_2si(ur, ur, -1, rmd);
    mpfr_mul(ui, xr, sq3, rmd);
    mpfr_add(ui, ui, xi, rmd);
    mpfr_mul_2si(ui, ui, -1, rmd);
  } else {
    mpfr_set(ur, xr, rmd);
    mpfr_set(ui, xi, rmd);
  }
  //// u = u+sqrt(1+u*u);
  // yr = (ur+ui)*(ur-ui)+1;
  // yi = 2*ur*ui;
  mpfr_add(yr, ur, ui, rmd);
  mpfr_sub(yi, ur, ui, rmd);
  mpfr_mul(yr, yr, yi, rmd);
  mpfr_add_ui(yr, yr, 1, rmd);
  mpfr_mul(yi, ur, ui, rmd);
  mpfr_mul_2si(yi, yi, 1, rmd);
  // yr = sqrt((yr+sqrt(yr*yr+yi*yi))/2);
  mpfr_sqr(t, yr, rmd);
  mpfr_sqr(s, yi, rmd);
  mpfr_add(t, t, s, rmd);
  mpfr_sqrt(t, t, rmd);
  mpfr_add(t, t, yr, rmd);
  mpfr_mul_2si(t, t, -1, rmd);
  mpfr_sqrt(yr, t, rmd);
  // ur += yr;
  // ui += yi/(2*yr);
  mpfr_add(ur, ur, yr, rmd);
  mpfr_mul_2si(yr, yr, 1, rmd);
  mpfr_div(yi, yi, yr, rmd);
  mpfr_add(ui, ui, yi, rmd);
  //// y = x^(4*n);
  // yr = 1;
  // yi = 0;
  mpfr_set_ui(yr, 1, rmd);
  mpfr_set_ui(yi, 0, rmd);
  // s = ur-ui;
  // t = ur+ui;
  mpfr_sub(s, ur, ui, rmd);
  mpfr_add(t, ur, ui, rmd);
  for (j = 2*n; j; j >>= 1) {
    // ui = 2*ui*ur;
    // ur = s*t;
    // s = ur-ui;
    // t = ur+ui;
    mpfr_mul(ui, ui, ur, rmd);
    mpfr_mul_2si(ui, ui, 1, rmd);
    mpfr_mul(ur, s, t, rmd);
    mpfr_sub(s, ur, ui, rmd);
    mpfr_add(t, ur, ui, rmd);
    if (j & 1) {
      // v = (yr-yi)*ui;
      // yr = yr*s+v;
      // yi = yi*t+v;
      mpfr_sub(v, yr, yi, rmd);
      mpfr_mul(v, v, ui, rmd);
      mpfr_mul(yr, yr, s, rmd);
      mpfr_add(yr, yr, v, rmd);
      mpfr_mul(yi, yi, t, rmd);
      mpfr_add(yi, yi, v, rmd);
    }
  }
  //// x = 2*pi*im(r/(1-y));
  // yr = yr-1;
  mpfr_sub_ui(yr, yr, 1, rmd);
  // s = 2*pi*(rr*yi-ri*yr)/(yr*yr+yi*yi);
  mpfr_sqr(s, yr, rmd);
  mpfr_sqr(t, yi, rmd);
  mpfr_add(s, s, t, rmd);
  mpfr_mul(yr, yr, ri, rmd);
  mpfr_mul(yi, yi, rr, rmd);
  mpfr_sub(yi, yi, yr, rmd);
  mpfr_div(s, yi, s, rmd);
  mpfr_mul(s, s, xl_pi_2, rmd);
  mpfr_mul_2si(s, s, 2, rmd);
  mpfr_clear(yi);
  mpfr_clear(yr);
  mpfr_clear(ui);
  mpfr_clear(ur);
  mpfr_clear(v);
  mpfr_clear(t);
}


char I_tv_s[] = "1.16965255422448647772592258166119775958848141666271461807317151391338351990581627121110918162126676250322483004371166853025761419837508247765931267922361154622845653694579790069686656084012712182421730943693551314840248088310893996602114348451900052957825045309707601663221818366844472229586557827071716535787849904155132986673275781265297990896643767564659022873035957655092289240997723528443673114978008124544793581769399155996030829958863885757219140049140141432316613830412482874992612509706200912349170164662498747627135772617395233167586184227102814804949031921505467086084369354384977237939384766801358743636540553832882375133786988793753659346702186351516878056610184650343812663635213447732019568416241488985736921821618529332934174266582278380714952395225330620866752855866993204567628865270534041996125448994515149285093981597972643357489592816989736526521773735913110700673784190869479225672823014978400010206630510898063773174130915745178859322548562578947479673587596677316934761530835192731997324812178047879658815191684248373709869750759018855417740223803840184869215032598005659280582653448187370380977910664662948055233005119108367447875260589088985531259539684920787071435131325863420619019898930554869080508411409930072635056777582521082299806636891824498064090363337730744482261435657083716031674784744337037712121391943470941254661043228867332917364992809505654172389748789737709622704228092636620952154696338662070574642236609574075559658727806290459230247721450237390113523230883269028221526607957269722454211486877602858370069744774468510802980152995522146779424930438165076769560836506422307363245906861030021090832076224555230062579510815003552850725916674032114848560756773476807808953716818967228327091982737454497290765999464012256947361700984594537432609515768823863551323193894316569711483701178378023230536409418206529118861763187030100530987924622740102375839202654864633238096046016885100344453444581519755796193256970108398753322429184144848928662777027061317467778286236895265269258464888574087573517430250622583446065577065316391724981025577041492266848959465691092855222245992245072551169786761456948118596949201442098290905293983785133797261557892985429736032239025381722617150183245580250628075168186525313433357423044039397592098727854352172019230101726825143816060218703178661307075091299420035377002693540102720316197138697176542366167979927629345544603984209995189020139972490349072704069468074499102095672367641003176171822910483662138803008974535674751569375928243589778058152703356194050044764015212648821702858274571083417382420923023978051245616133602195014581080822997793464597011337547525058515608559147333053676957880065138921327355068601689111951415794839573766204215303930571832865688288068209945052923435855066852805218424534968669439878806962602834477440572094104017868840816584841436687937563025137317831428555801349206775248492198049752931794325105548246644751080410193570338944324706364087086115891478190476047843679026137467024815067425205397256391897412061386182981633470347390964954709337866154384264675775869758286334949478951302021614449206323316810155001233397369631553641935539882030543809494704953017167672565824803193450833461047612422789840349987127677937843599126566709698565051821461564210744481343810032385842909956725185107096882897225244513591108267640181013764311889369594919176981159396913725582545785822456622700755798203199185835800239466752294148392302379998865577287158151846581328298265163764178274792553214373047285934904189603894887858306849537283122023470311881490584953090755902945395505631931157160105485478467704754232377666790737311417354211292593615786971380750576910380371178856023916546509581085951267969369505977325423807995610879588738748051827902297695924930553480525771308254519361530357532894226906876166480172837335891231040363388123921670508466106796643515449301343827809506161821973182446700960593749469127749563236193510123118638534527859955275503451427265312302565947041574107871779197155861154757478800914285731184547781500751440756376571913258183604010440364906133102955599678272585356616675453838644036494287787257540849756452192577146807086393423626756394851131855413340749354163048319971564764108028600582401381801328858075573678512819576139383585865129413459756523443412076662510308172116602507794060339712117564349861208684249994786787330502222013133494473014781729347305909246326330461474762608829041367905543377976431258178553147121351026057404935929487970969041276744862811667052708779436644093051657732149103593585206196633010180286873080169356416610045975745872766535712411803919217755515158402940494441221464808720005063462026055082754277181914311101928238066735702523468565573891152280396923048087357730214983988864723003549742866743864774205171669944373884872750427628883559583513707611314223273176257787255091295594099138789877348597407098124417269059342813400671179540624139689033111720518898898781995933583121205318166196546405298961656750052061309242130835845703040719956358538078720285978622920057501951518166339871224698691642408526105398607857757524825251382806209196410574253387801379392578399580635650876472501681818113398763476905312959811698713221612452003836712142514138073071125174430202659642840239480217634160391302711855512953614229736511963469809351366347430825201710227301675542642544028879666380188251952115102913101335567052635666563430384533438736805277740553910074360619819557816419057746855791587675469657965027492305724014138400874440915208370540687235041265453006758827222315462586777983006360994881433765100426627578501961276898014457596369411185482399527285456242616112360948260880899397737043823622096548324706463886646121212531140650083230209052472864425440403850748933066920347759307074884408975107117758969861044911944089738430271060692352231139418213240884394594745765549382272626001178313942203081288910122766797940862333191826283328315264187934755582955785927201014967536259686950293593368972559089272254420963347419603595373438675484381026362921255445210767795032428265494469883799914471809076826479744158601017793115528317978239939457543267801554539351882389616307570471623009110434651391316194109662999424155247524485405689967580545776983239087520303505576011211124842677238829578675566634295661189820273893981500703638946545493471868661788131554298113605895694979007663130792585744746610736365738312260268952389896958869784599707324360646743149326940173841402259320711218424777298784986989900779521280021673824168167330458759918677532681096840595876544160260520264669308629088875846397086985611447302631475655493219218045935328433778956547331367207932018674719134351632463423382698759851320803301991959861995326447697039518582250167590791516288533440572965732997623682670446450801776098620324089917058346689576714713443717609264891611608697615390894789482907978361661635676205922172864427594468590369564759231927279686031024498936073846110627774201698770617900856566222764139776648137781308479093317254159319882283436928943387650446470882376957798797976204290591704357363302949362300860928091705265236229349681264511512949892198163502021277640261856975408506496597514786446344570629791953370817031347144636046466681519995274215268743520034095776952510836232397687803797938639510639509301800302496886053407973473103019458357441965032854558235605935106741023096137922155858448794690099211009215324114644506010111423589841761604042509162559002146309414473061801490753453645668443773646251116394794979457314521065016130195761143601062908946427728965742743983899655862427039186166825139248337802781222740763953496154841794212105203097859397200166669108747218200746814276319362450720745110489901038220659894840567369006252850520699301192253095453822591596239320578855967292598043896686297810847916380837266461452978684595859122524920032155886581239351017326379853296215184835240622079515395010677515316989058285276263485222168950284656191254144575234752583539878542345276353242877371634426423691953676278296716869841461007486672843579897322898572520188381133218718656393404442671044012235479091520134039635519185402151981681491020148198659190502002710371093133084033456704705835127160542959695607558133640442681601586892664724931738070766681539602068153199071807118301857861342669791733721524852988558576769485216003278030195251597980472199100108367970486606739014969496293500119616339539013970936931817954858542066364822602834185479289464736292740407434774892951261524567960190357528233142820042247624269801018518792081080161825790258741065386673252538077247024611121475143800567362771091690367081657035409179637664223547037731249894816593179277064351847589394378212440772715414082939657185799059865207671934381899322491723848545324629699996184687361780621531684470437516768245424402465145721622553967411075029208061224705660584144214364231822910212606500034850103718871072317615041051306569516675210851422978884963386616519622420861441571014305939869380136139759101599831572527409337599858767792739466541530568414460231558138229538231805408888917183754364338197434334885206857782087212742515895163015181429026631251441988483476635006611110367115717181190147178348030158909613104092543680094397653113917891805538640730333503209717893476774717754386201030753729699221093757394277125628595304796312698745123694525005403485114589272772856128577211039152782574205188432481451155801085527197468128973244184555921731816584804864436888829237394286471942984184148315185989338001991258733990342578851914454957223213174387410785636389824256534003815623151748938062264155647373114193659160427684422500247810627222256381026642572106707002896750527328959014464336226866636448555187074207187708784243055912107329209851924068096168960968789455611463799143136907892768384451199627122139746183149599827456671984317505280537129493511925612347626876015553855166908717283503109127016788013361781338932429311074874125650832575464742846615781425742267701153109514747816521611423130680230258970050636955689283465065776185953572087201101025120181869255183854969783680670523754348415539544849051256981387344209444431109520295269003308112074796082754645836194780202619717095896799899503727344960963667546069054968698399451366368572944478141891250614831972280442323331864245143703213178703902561797321553890045167496892405523933956359724603042660731074288688177992719642995883964415151440195550942884499823382698746482513598340839951256946289009390529659404556176557166137784830501938625502743529153589596599849638238032880565454500104377042452254069661954541173120576024536214409035045527303933096504493297589783315022867859349587171656419910033496999143309198811186169867001760911463475572599625035625943302659953870898583883872356315946158801161264033166010760273235087376289271742690454287932571009611456342362375689442434769569135171341611102798768988423731154668544046638245277912349220913479411092844969641884906398148318135683211522185527873080405491396872751711032356553499058416264937338918826367911750728051377118404360193320957487060803940566602355239627048762649470956108406862752563682952865362413933779751977309421414462613767368378327441606015033305781230317600281963770805739412665041319239836915470170583769993637135298256696538977865355099034372018871828222918205150571364660891625582461140704246978185333032639120335802089163270095183452720642786249779067211716621336265564846876996269653997235078001826103907184607423309206830425521345875287813786603217291722086581104038263353825990926883069111202496473305851381130347173543869182508948324846141533860168311152654143062948320938981663235218099978744048506701025189814736654412099483523814219533474952566797617711811486243877891447548742738050612724926076489107466540961325932432275034721404046666821079503962298059970112001275741699104924953107398114658988775311072388545218061588213757973505289888950492036376546099906092457310898929615938221064234239418846423662568765613994144569070184882850036248005047936936602321964929361517365624297923193720189098393822347722958022956042017596178199690129696119173853751184296753210217717894238082966812247525649228339536174305222980165017057605889708727705922293281888155429295410035903306592286417584908831342507057398653415722742020837757752162392739379070531631744041144772778343747105071390317761600246542816373906226655593786262799149327550935218852741764184761411422987168570943541510511128640286760114927544117381203514378660216126809907643115517545340885997899661951764943926856876892276814399115638915544216185985086638179877678693604666527682599929727500055453154874624505779517780139758689178165678473217943266399456861588992869455873981328464133097170605573609514529244010351685318487890850009046592931132771306017756541659839309362714546631710425389055968803776082920347709794357112012178438523026410250273274702502056846686734457110776915646809951737790406011517664624862450387162608747976867855085759100293014576686811028767264544579397087075622131207389424754616134236240624365310657292686995710159873004986584983340484955533394489105141878139597496070233806530626752058081479177836871137308967528165912366963077437494683588515355756636092580951078496922537263152666516945132230547618771233013450177659765557087997295096473853858646022382556638071132653253470305140832400766491733673016731316039563618219305940625860113591569387631817541920931913727274084759312914100354261206622394500613316194662307462012513894983537212783168454733882592879046407657596735181739912876913386523128941696641807256798372234030108010560123483449983393597248822834967627914137794922385090910194466293289711454511487575979582330611724669003897097925930566669367370169647998681574994782090161347984588865216593113866266911231970743864067597672277380394063362620176691212383666716963441271516980415909445206615044356303072514573975471168436669361154864609892818360147952022956031098162117395298295917814346851263224920821611028626752203711471744951002224670854133460635309847534390363139547228027971120800053915485832810566960532987023743101603166664424628534197744826923509221837914487807903066918261879391873449865074258860392628708193844575161763814800073930933196452195562396123836575264431269354092427509524765072546175025118941718318128419458508501942317189577055706717355334549224021005556559734478261131728214027982154611947547510976875621275234024354975622070815078219992522976573450438017788928796156212866447960406670326670653674077095993209961930220973344001409800316687875170930131431340359689909145564373082935082741760700401808051164375991073845957392666522137153552849414578392079629532858007878935020418448976813760938563874387382018872326712245245395479794652917666944114700993929087377006800081114044056783169329036166536499683981990598862120370138804609923674844931739654819264029557901998631964470655218277613799390578031479379208340905893965451897059725391199057043952016858003390646152101216772045031129423593459878003521013954072944473791013466262073453822851568041993269611844263158362939359601994575307446263647135367545006549763563109763550437693470712239676176075665457193349528407743411519752231258793634025623758076378752804135302300624166547174722908985700056945619286448680423547698014928543715587553902494388272582506199750090839576836577985209272278860651687488265455171458026581409768711078257112137234311129547428077963789861922371469747255110612711647240958561368866219844598879156122933479521759300820810214152100246061199045271063345332015396594304605076425236809838092586462901205100853863208885615959094933983451862168514041816618542721042460775208363495636450734232182651124320600180834261775453001962551133568965689526357807775748995961323029115719111568625517622803800473626375732707368584484358868506240610757586292367094120910970481352012557787916602620371420847671849026733341947968997304657666570974744773372047924580901721429649486955784748917394533364529337324681625965629594198170264232029163792589873874688462956253311083957828964396199878775317439746761753311572364050167578638165899592271303079718823835937094278917981911998405696402105791048671033111750213181499924736907443846937287883713426171533523567156030124017379993085703274376275684218808743751611840472615745912803292002432705682812112875292383047284143148027565631101762475453225521639610911459876226691897177434344765386302612090818897256237611186673355317294657726119849379550749891088697043182032496939368110080361783493137746392622666993365094810935707580317674581470078954150589838612634376164629274044394787162149378960187364465765351983631811381558552349962304334220112315798152365477473514039074522737136049857762605903830051728268412148393167649632083502521807063445585526179226842806380689390683412658877987882949304997619144994648471540797372512300231220626432851782540864385469074392279297516255605320188441969944529884195351466507742183551120633874673843913174049790912688037821181383578790084412590905270271571138121138388556707804179305239055778607601829448166498625195232965068476628055756469675038438529616762388760006913577778951375108668194401339470101768263154054926928825696273573395374879136304888178731072009309014504203665722772710274085753382308751868212563953147888190914512190929535486872033807382260948491758959176272307849749274560137946087370736099563130244724951395965751905577092603036307356835665515115480876414603795089591773022336105753721201035888761844152330415410663380342421593084655274379512409719551898812318865763280287821194151866938168213837767568167564767224824076907006969764952093529274183658921505020415956398215342267620863821156431934543892577254376704926768828449094141532468938424459542355505941518222744501256486069891039647701246489059660215505016959357242648657482506551669675737418759795372351767080889017191433462144520667633099592887735219590828769149324643731993212620769711229346960659838074746580941263268870430376576968512744157187816159657583784008575109022242720007075666424712609527456595328893051067637609349092681009511008510179476361181316557343964554255106523331691722196103049324952281359941745928419684142531959972000141375734515140851360036307803616259783595238493585646360605291148501754756514447742827539761180986874617137660699144450136973257184582836899164693795204251383271222404245891434035821440187766333940057317914740924586781184320160879343540029540015528849700136913712487492680821219824078221000084156035201819363969991559193221844257230581769207242772724061991969168327306945638420547336043837367302470153447080901055871620761099385675238479655733913709398897042503894739960619295189410187022268229063254493904945174659191818076477952775721820488245581247024702584585818095176948891734825362883774404561446650810198191620530325774490098218336403443141069841815527021660257417215229812029792001589852721023228263320456862003952146627977559059844035559088007243902484626383029729526466366358185078671434937568331913525836958760154880241766007806636711052952132053901619579243883505017306802963287661114241874751077636326855351135972677135455514489687235852674397825693565395736283153903885957724782615650400244913637348258126594763330320727578273341194561915289357935484598588346890806588773429431957021485132173717039990850188165515663454890572121153164474878451035631258104377958740848525660320074374519933520963838852026179550740166587312474997469690143220687393832051167483615122134755159294274488042074338219908429193410474806094184046365589770353798631078935968162022629210414827764635680249467245824815240314116760868134709392738807661189700384120348252125629294237335878556320618934077400478383787237863937840386755632542994938969138967609410349228364789799412075388151502414609883791792153471578825132656091894306982329828471211976767633957506850275441928742878706763294933974064975863087055809828257546998907438131009831718827248278535577279212808416468942176661929692321432020366582731142819469634243670981970891853236249768755951314141620130885685269325049909009556404514889069485001053904682289978611585549777150846467115448059039111859268761348473404137947626882824852949943757787240401221052196854512494024139754947688874925899054273674093429119197728251767349632397916043778760800140546977986371928019255092825091096262553915650527392618039017660625386731856496963327750361111622755300931225275206367122222799823478859481241520169936408678536794116280717486439642077152572310660340883259706547622982554342479814088406556294406480837629281437348834643662869521063810223775186724543618437851350543666133843674396886920801302092557889063710280363289647753701606048046285426600546196128691748128026158367761574853445828917459072112135395874966968068951428246200551950650960375574661368153817086448875087384275959444338955565376172790287508122043498880112764872029385765495393030874295899889611291177146271220019691493447075128647117460590920118574539480165210600480457315103405277834489272123110829241971858572063949867107050505049344694029931325813512009992368457740336731150720052653971393406252628932040191616893796329557464744781673617954610512393926323843276342155134405545044918582864410591556361628991965044329892290842561936510875715431191889482098725140494869940785488545785596405981115281601982782556513530445960770112870639960917172399109828891303445445651611538334276720424544030920978888070473977869148704874867744303983382422027311699089970744526030126389361302345264619233016926380530062693538751497070368698548834103486264404441100501343558563966641645870230374932498048236829426776615198075031797312431593739918249815327810268790347016968879037819273815319531189693488928021469743584977038879844561307444818018526959601110501769468048227780143831148281459095584667909589661856083750373876236590595223136892678169479731362425274685170898366523691135123929342396311067228009373342826833682235278675056401514279882903417070510295527743736350583024624576511397374629673288959432364427756192892272557748377711969835281733992279723458125640567796738104771108497968186281442858134282618145243091545380980292617767147124423823066332794546557504938447920496830727850863832077043041007918786145497199042117681070452560911428423953715185800646590258380297849585043724736892854905490999299482171223300163621021936793476864617723586312199973003555569482080640715265686743927359066190668652496280398946128081225025916260188988292238504259534138642653363277811058476613578218389042572924780826112468734914362849061721449913327056786156514093490291598223094439626801765875349494567813422387888098923852417758620564783367580676757900328921433833333940578242830619189622088604883589101160939274453062602436482756672928226912738658249652994840521043447957167424331934571338060416180477195047177731489672364960694070476255347004476525101633633276808853305593184929431842702531090584103197903712291413100226642204166942964780889813437807887872858301282446669932757424254969923108992499602901141381074195381270560273541269360100173282500362430032730619287611612074345190809306743355826961390622407007798755036613138618140658019424294390414862781920796245687276854251454013820268432399608108633564865017511295562715072908083536384826128973645372195995676456200612230419928930852472004162959172489075086154909298756467693395336978959100311816622776152335982101000921894226059309136377193102007765928983670140970558672709841624258696852528984405532816396022563550661064274881868760297018960881119361227655621871318208806413196236988131755760956256729240031471462133019337887337556982794310264800790861713048665125361436687144031843276224929798315733248077021875128459834109737126160524541263664765689661875982765622024546492293318336989979814272147157833737074912034900033475376022550946402786507864071514614091423832322762828655588235840727047890536034746763059685826273727771561015543766452561911394347312794053178525882384683358508205684338672522650438752333300512840737431164946154125162353237749966945022083254983553107592195513866954699757478785523448769083312881647372791754926923331556911540004118891348771325527024957278536143013554644197722471900762234359648350693569289082191422730851035644888840181897129875851327454802476126060970777822832956782401420451680848024474741777159166915401637290557429883589542273443156734776888781735893335195423880795940926578618083220201572588818087664907252216095567571474334834616447243754076671517514522944351819784824985261514045121483346922564042284739187162850782473849808296849642816777996894928038534218251389581059494529222210592140270349528504743575166655604194021042749551720471706964647193711581217016783857648775409393039635431875407103355945152845309036534315490993177214739962365753490836892304024346860344828694694972184503101074136851029279717744799957018527663217460059219723300402359281406240715175762835665265438960339386175615929031923919308994592250497182746284481724630105747222351230950529723090494665684408340786660401731797752649470599097380794331939920476860197295267225330022303840913836988472778770546370600215728910117538954531565799894330012975458121148993061011411315378323470421395844128318056241758857206629527495348321988050871087105657170653677616669788446285466615375516850721946498282130865211693656682252945410093997863846215970523585187488918250193799690660374000024336128998231696893460048974192651991488602247150475717248168858686092098325128241716534879273582732596079789092099243429828011501494701375284405184016581182732302322512253206574777950448849694712199301937434634771289391737658409296108400901474759256173331984972501132905293821090159381558458847241948920811940619472607709309674669871337647231774305118208235361248751325144864046280873133625125477854613281681545829330036159093109694208175985209233232123011961339435888742670627615481838576522017270609410276049907840774378383712991719324143951763123286889571007289881777366920156913409645067995240809648549825004167845385816967571857049924072447986872153314360571369231574361433232262285429658944153080281434951653298873195472839070940981303747479807755262262211247938425248943740539280074311012111780090676162820085010656598772380665781814034308108898586416210392830834612379982053683673889183958558568725745138061955328539265441773576809307093058543142651203025050726104161386278733430615889553284414081715689464918293606444130371760938806085876306319420664819905476386214509061971481245935402845514214625956871022228321631633489891147997086835837228285472770810611280777758280656913900822002188856931869584766191363305116798935254717806715250734161947664572946001814200749157986290846186339293949189788864357186207991306310503144588798786880734637359866059609952216300581036251619143465598942843834267735008595293235754394887633185422127626844418190065409850513981952054268769003143567302893594800802698998997761244998063885386391662615046131220912911422018641840384204929606848820335175024312446675126093521010221229889474923449675263011502921011880398278803664075351547555680814259344901739308055838244772018678027871016849246049395013231281886736656943620626591022128796549200701877174993886581416344917145061855714831761546829544792040423995672263209114568334660282574900286166872303719555455231845829558535842256814578494820641238351427072056605562125731590738178140795845396413822721418960339341785896392355139112699475586339538353710211673934541122759897685979510998453921078637554262468069601152164939270514062867363488303493747414124102139594098471222566641494531017375257854232678846197294136299790757089105810881958253876024166961634364472146991976154982989258260322013873457281851934423874311733279308406013419362792202497544328761048788957361360884499978776525161643575612297283633595633925659507034459854574212022943538286355953992159729480822367056404197993805016958723955371512116672342375966916301655605187249160348726876139671821773988811228479890433474059503018172600413534576977519090105255123609419005326510550184830586974319068757171913297132629508227665111322692324679923303437451256689921428829347095876489647505467333363798460225914014243257965534704322785815710237914097146104121789221680706208375186962990698546879949658257063894502441078945702994073446973805418035703399841574594660353879046177256174458357635815855800822911444360733718680991806020575749173979728180332664275721960732150682000053697369740332753409947595370190007845439541668431177842361649774739478096600432638881662317969809289649419321755888047205145688798673016358393294412488324815562220841279014342164513726242813548211018080259105854587790536649886231488566374627605488586167610074083299310129055979846075548324207555713915732273599033361526919529411774357212397637682286896666046321245543903086659596012234120694716898375685332195404989954523315339498131195400720337236402804473509854905997673172953646694091109907472982044251234088428922533322456670285163121936328063924523525131579549756287228234115955173075297280846154184304713358109977424216097108235024248400626119168238798327706749649078174677256342501111060388745979610195701681070326977365675317848240234953906186703847450639659826237556714591882171168012463705569247441043830055978094115034548187804171692573683415598031056156666601305688970485215199415159571848959425566164939152636873751660560496431566218577933569915671534327552827233836182192832777770437687346639022190855179103247559776928995523453629076700509074526706869535445418921097577452091333753987331561026341381741466649990254318348684492602857714355643594709444357082860350078077380035882571297337301977962406660129041025679181151683089690364749749421983900041076522442842088443993154430938378826611957816414076016928066652973026577307306572454279309605464147546551565901554939093435180959856673332338634894979499165894765639396042097695094124316065366471822806170330888049435684223736392378653025833904087637463029890225781190224553279462490375859943583427939596624691692931528438592057766490997234097646325093342051065991385444841869630484863820364388399342235126527868302953414558039428924931066676517561019227190158775642048716243740489769110856733607189849229425122495804999182981360497862356844744288917647911280829216474376944860444991805278130577639804177786593659670716945228620557433912817307620538941902362343253466377926706589817669183883058508622156398650176047008436425841725318075256932225864649602120321852998511234810484738031555502851378733263109096918167212005106673904378354038845724272568563749155982373369874247123097601174102493962796190138445328868635167356709927489698076396535242254606670441517674246229015465363352887774512482732550871941105907044824433858085716055531971236671668976625257542313578300425746496646387132134233712925448902418282669110582949009254731558658969244543812029176882127167103748448262121871541825275914927611999095864077892606666301086244854175685406364410499503834848975322429392212151999287096112292282074075254507178888346425150739519722621230344014440874237644114172065154467294145209965284255072783393335458393381545298474770777542328979387814671155589043920327050704384286774484031529060592183625173508062517165636631942299177284482882395216029049248600626042347306093058361366689780526903982695824146940629684218905576396431495132486200700511203291902641857492136332868651349303704129381232907335919329338173802039182946470056137580320634912818208580957217087637058588899899813598643763749355073237102925308107285475935554547291575830790513746353754335414754977039546689336560309419465754190743959675149305000205075262400169443358431072932740722591473934010126773835933799156668306098272958897158170113554906895701761965419111666208105199092479145820225263895818025192274720999091964663560669156882954341612100666827638239895703111448973118183507970937212604518136262576787904181496908411266425528780344641905278933910840551541844598896776842500763415428519014068832446256330556328797924562468455103384149174210911040930181993659621991774646117586310944959991569451083611567049337878542438998603774085617735116404549324226070211652589203602669594062077453036676960495826041843511837269480576844937525532225443836313294275622533315736412758850357407925808802712310449714010227155332153192624502018787378593311998497804093489036842419048287912791183543018966018301946844310697582840213923223140505927174893860905228420526305562584452631700506779436158701758563705379202924167352858160592276463965556307274811266498714769899427696343849118092343321306568350474108739092985002268538409074520945245764235644640220683057903416156991032038955754174748417636652301958739900772519645413361004189651330192229638793163632315584577034360447514129084340507836389943882836804908907762734508689787627485947739945168587043213240037745596888164196034719857601386327029563482795177058409101970663003869318976749781529383325048826206918055922517019509243521023579723353306491604231938875866577001788722456161985089651525129495944150597716833758090044147468505803793578233251685613985230046677897631795232076829477175970230152772478004397934727687355924939289134735781833045575183816487247172565348406395607513375946396075474110587489378421964239252144346253069533371349021065386823970826037670446622368573049796175301312835159956118789758845671447867829351692588735386699549070456542610480065037736998539374802143507967358968242097972572667525265924487870973461854301185297546692637633267762317350744200091342949774745689005178328600062749392793660974062774629000667084596257796633900007397122177520555921024451176819764377327884329795991516268721316757908372269112355385536747312022506069769288033616810947078083127026020823304069839429854932902352735815467396266239378689462583335611859873765454894619916359113830343170368649287498819806237039853777732818639414037772785543246986859750369247583425370444017524749519349251692965489075887271590928175842871407306397691207251623182911550960609537676868269759482915711902854987462130813348521866796616316992618344196035437480873677476929570192943383465451352230354655632602782289207287824229033058248494177191633573334281173250471144270379161579832673005900415323779189405213082350388469051270983676604679469413315209618990008974833242711885332271998785118730292386144821201049743326916218840159057830063330236243840030544479135291508917009131580860726533846009087785427881451261716562010217978296854403813806544206827335859917949194800379823910449443591813560476196354368799917233509264817856835080532625219203259481685319398893415823142602675325061436666281507105302264185574951709339476356829712069999254113612891783354849584956156467916280414326021063792244222795754079068227954019687913018780593490958416399852666945843297581448713833388119933524019204080383065786322039712005713790538144751562176071061858337366497294600803447047007586077419933121907280726301654658331339737463809386559857723438353930428235944829351090342861310997026163789042726127757247658661875083320790714557238548690962361689784327301494785718410440915925436245570367520050506171514119173477806461182010586792076036123926059982337852307098670435738780897648531966737526787397250576223373204097436816670990229871057291826091628172406104470636347878447995429053752859063824086512713072030802064623670412302904061163095944525269960045549987472719919226881815310331141562701194135356542360166346538008292425872980010268642876121537863003597967626393365213566912020431516881633899051296941210053088850800592711533198212755765837960846261145615201661577125953369297038733956194219409746798312766492595823509575023493449374777709983329238287528128459561279405764030492553935107205848291088972786957198221185137347288273174004228814014842181767450796447715582897584759262646095261389206101465840096900403461039074293081792454010679569135119568987073663785819650483160999531222700502553345736921857138817794928911488600859289972526664645629354604138333288802987006646186300068017226265123805042753898626632172045289359505019803087041700456539081314895094585847402509214683585831464058772322797999878352197845254850477066888544828170933019046184176273305086378082817232950825854631408671720074899262961472484049476708026179846988247679882347387934483934056864667057165944876296173268347357760966613768821710880811964731670359011835876881217318079655494581936702297503944822238947307383958474173376736366386930207454554719464950899963057520660014445369507749112864383385604641105772393927931003639875517590381876531941357670837869678350791100943077272426892651463543244605937335889576460893464621274606774215633121295660087336112333213655955740563538388002312169557401052937450802867504165399950237693744958574616008648714389643920240445128632917125667834114615955007884340554554480843843492861416273046213870530064386686942753880753860695744120234653455313286491931992903897200962472380577328123010764207913141015248712143929624359733828692463686060522075217353025974209937821369198933915529138027242802915364863829672581554958760718652264829642701106425536586353182071648637772734990743430429786233419074011470334370257616162902131580084652957652384876049147799055172124361899652887941807451711537543671013650766763984073535005693488213455434202277629469973194424863156489971938926812020267086664387793577548722882544160098467491921910769449856199280333887845521673272678357916258363334917746342861522768834889146341516354322708119480533428112183008545946627754026222031677161739425353221480446012956960849532857751309435078697705635788595502810651949985896827521317802838546126754409710052940586720704327235336139073945207506749321416373075611519048050320678888984349408253299723560104998340643855241553576267346936363658677280754498976923772717084913718129931176700340185065645861579755029637807275952475347733093623941435801653294151189353512187985581631799824270943413856899201751454969309645516129020140896708108329009759119678263973605326061049075832156249994331194016683262451104065135137681297093206898130446221075869122301619283109053970443694090138093319010987327123625908899159353857219492823154149391236018835941412565517425139145864025771224770300523514762677029806460973518960112092411266343443763099396570229347786950237291399536809411592091556319071482582930530790901116531483424245879360691425678406289946374505584746886285477158866170223437188961256271739899774783343046621628033799085882731009792669743117669749399934181395028260791086877586650222946236093476340051315205340506151935889424907039401160275525045111499428982534224563903474495341176993633978573794601419059058707312900131988725594587725975255119281382287866527864019845098503570134432676018494103258817976734169870362488033529418603300228790385478675652473342593956408272182889742254005579007446466050451740187147923326864083524646493410969921791987480700192501932153211288761829047411970205532666469609477946478595922982187337730326412728133874376320951753245056260500084215330106093728645553897234403644465338028144244663945007965832045094837922330290229136174109963660684688155694515437854311669323458794288332297881649121189447739177756421284684752505953020546422723008479964767514606486273864315749829343031803464194654244868745989880650561293578745673690481390420115825358826968224855185832150997919870506785813269778334380221378770952629453523636688304003774566177093729020008107351747378860635820479673898990860139465521163019878772232680324130594903190656448306253091245087825942704991243949593447667867919985749482394375093269846135748749195667852392417836892596203613364794504990702813119985452451687162565342223089483563115990907582177955189556174224341915437244843715819813861266708930606821718395558243034660023318969086745391283716890568015210659148564909336619889752206793107056001206922291630037820786528742874416121802543588910751949537163405004990065149712489815964997404476331893115295645057828155394491280770854904838752412195716005033071241232601773148392633257593716827045244991451866070502424036624564063507090014820177273185408164756403789522873355609433010507094623261455226895824797879362189804571728877497695041874469048775392465181310470675318084723649558228139043500699174842454648847846335170851899697001310535060258345704771494830557454427171750441277708974183031302746386430352743202033995019314166957318667965628771640609217980471765463556447830996385358045589182800335586683442795554655024833019102220732716161016480475943176950700008932611312128979479513750472724580056164764779370905486937678832359318637373867466510318404789057736004981214882086186692855729796529938732492110996429978852333573504993381299000534469728217594876535906250459773670898104082208319561733333931756468716943565987608501087984683793876386515641669792969974555429327245902954302037801585822029640844807800594450082479236359064106047112208446140925184335406640488284227608534038699951306432866968038813541418078812460672119964716706026732644183834185831854125405536157274658540068074144647106282938145193064669263608434636795787587724561098009510562524131548930648259951352324285086870344353700069239828412759865946582855422323047090041918205260297234257515229915003666775221144291794574559077871477871883732407357668836343793045518743762038200790221794018160147886352280611709192657132718371859820265827647069937662833101650166368963718814968319343456051539281079253404574285821615208962139081249507500742738284226011990526579288150731980527094795797230898334022321108241433281533166146445109646015926776939367816367896500405466829868920024345470773109227307517528061212127689294785511590180723195071993109203797531188681027631860421373282661165146443511166067449819050337195690162026366914092812743375807365254340137675403887031922872357045902062594614026860360455071366794899243060059347641854552851824880389637526928800292036332162774574263052503520697328798833806634680285725075930913776574660286488876346526468562659802323661035874617383756991631455176878820994096027534208741282936237708848089625276769593796538464510377590471315122103170451592327251455060262409914278073000441300641361183456807675675214654986079806617764963035814892515209928925524357362851776535839946962974617400803292145115915420876410521490958992569135404691172923089185070076620720184630153364567717735490686233825718299553980628618787578968124685469446003464006902714794590580307963022251886357824519917341642160184723851754155956424238632967589331734929205207352983439829163644931856765253673800553481729477473212735802153194243460726830597399735788052939498833975948796881078012967218138958672349819679373500750689103102980591011123704724980623955489233922016762472688939335778482580697485990978782284040487592348689639410319603971794478080766246998335857290956994437275790924172978038912835055027943335486158396090172883439602400294764518375257153501453109757956803983525376793070618037291002105662213179346881745022402689851240752555048311848771225498189411498075558783995607333443526377580355908227547282837461981835768358204737234082163482296366956481968152190845155286119208967750764653545760531192049283331568025820338204742652491347187434913036198099967626483571227832901512422496009880828770412960020519647990390327127602798385171904243900471387461936622252614835292511432351024455612360757893662635741076359112778899864627552856753006723939988392821343196193614326010009887640910002085917512008023210706411302877951590920536077456349226092732739362393505380337452448566374448035436582637187897630105816575257959130594537576816424178807058985862700272495539612396424014256289367556033962448614462258555621148846564261242990047308101025506254898359848993204161679438001369856122434648097576595061185950625256677910191105157413905243321377144208851441262171649747887397008886762048083766766658647892848376099440454247900000399819080011473759374163552266216532715433918094003228864570273123795720151980073844385937966682829038971656502849082597679343668042746777903628829518820415290186282978414669054967064049937149369711865977753642631048241777960611786648254714462817585935391362518070831268699174192141450747711621678601354640800217075803215233863089046225757265955912079651149952772709373244311854414725342637546848463146688990186274438281239861511311753300435616543880710461083694155430009225072516756087740814419611482081922810151609801320274906999634464465218817825877878609412477564809068881366399592996452959062400925421457234437624480587530302874634598839662435680299030064780159715871020881367087226406489726136393826568325272227545851415626392749078262245480896343971324111891584085848680751870265553226613755158081435816985719147725208565505880858564959952761246259414371050635062474805694747918048859957278646638789771933759688380093428411215136376911131581168294161092860460835289265119098237768304134916228393630693386943192104983184313992650688224517829440655283519624732258693435952869866196244421866134778141846302821136179799655448767878377305439385489246454336132124134487631460575523713341091251440083540118566621577230996898460893688512998460689383979408604637870904963299782843764303129819332534458759761066050127243283991891094869415193883532666795101647000301282139917001850669287140104269679363466300121339449289613880780605645528516173751190291599657803503341491933590416659652511858678110716288070811089274526190407937543727559355931109513806240929057540242961971373605859202343454862790266027418313084367933684714323070449172325896163517690147384780943896938871033089483522262795172572254193392307708354109698014897872276642754253193202791252028617120766769325627046337519914857158467638395130884749629239722665678509511727306731223998592001672481136723323088239189609875482378430731441455096237477264069926975540989961945985483173444020384429859492859496819639963608817410676251274434911193313767462224437822813700043639755410591348094058101568067780512843341291023711044664843282440152900209139586835809980574586422270292177770412493872154265270468474972902342112299368546246796327157824731625696077871063857219033611190833639681287765336028361039398060925770395481167363483187030023887707692680890854486925706412308493584695587578666967941999173195522447487238791974275353456113261295707235166022371823761606633667289268527215540343840609763158174894713197330355607289571752432531230635145502689402271066763066868465658621293529201097325544305195945547455000862347487672310151458718716588917310145261021714830454081032394037863957386540329144422690895157133504964359551991410114218492032520359798125079931452506763799913601004849698144385030640009794073144305458963468742675927443578332873871723690390654239259677903010592200714777192141522280476293220890252057132344892074115478478413844372531018130805308036033748486902808265374250122620571232491139915079233021003583832032544742637497552435937100807063194125534794836535042173414927313253211928256216206108329437835053578121235459866968214461484815701041609428295514712597402192436125726906889760640358032743385711728853705467024738721326410718565711673143958858061365740082312150622986028312211010803739337591037833615776817675236591678192671718905783541248384420306774983554822951250460966790168657612811826128484197040960522092829298876930318053634747959248241786518819994579950188254611896432054135225178986110833141931934292081538947043638672153178909374226970555403640285916875180119387540989949432434950798285624794100218909155556597095367337418316480218816579169190092615775131518479943097299277838142255211343489402984142968377771551421923816721953079238136933873984775166144442469927811158724757669296078076706856821253771166951402332333943944264149356472400772269595942931567942998727287648033295372484822260911519577555965284948308368294111758106852047000395766000467473101324560728408865012262768446579198871354223445646832281752774064420990427589988009676630904671709502681153842017418251958825418780172402552352891270115447904521906381040740034891491164779960674278830422310164358164891867195041636042968097891874466827638539500337454323784007856755377913998774086922296463485753548833755264285134436804820673369861158693275511648983360635146575344771534316858686415062692806531692445258491359794091308517544013002334119913179889856067845460345740964255946485213268149373286896453993628722410197644275212363621830998809737740026203896539861275953984231294161431439955792955145158307015034327170082393506252917414838821769342521726389315379314008165056600303890367212999304984087565792964460484559471513840013507099334760503688405109439069010132979633707914055976216967832595016874484695303694204983753800186590149834164051315663042738473496731867349860498369227612422484790214912749445966828571660961605996732777272170497347416980290590981588724561153437033132733595689553661937457719912339865738738137183690681652074618260363849389804839071540643464257455044306331292763956246853973947839049727873928990941139532924323512191925175050618355156706057254182793266468061676550021633318501986305683654832138950108513632632564246587884535770353341660469733088030174325230851836173958430260079265969470728450853346291100201529333849232521452758382576173923487467448398856347697811921635828319932109681257766216473926459070797177513357094716307049124910011073453777143163058283780801703492043964781106174020081174045424601896595433441292872036781817832442772282386682510013039689869263901572208819745271455250934593284012747848941963896411182574909114415297113656650833027686933430510537264099536963761883260908199214737160926762386365114990113999684696783321968484730670492587411842426769319818121529628331159698817011987168589881711268152130621189979714883618694253516321930156172642816652487463340962430189996482355881562452146888960783377553976287185943095018429706021416284466232361393204501630966829700137390415799490520716865545337591292477811528240165209970309654847500250960816050034572580731145579376188635166711418941793749925988843939178777988424663682374638519622233193421968206548406417225317050236545506605880442275729982444783594633775123875986689364866563880200731730345977255713666543016308679703089252034427914040599639268915046807651842767927184555246116773076418800876932917779168446858744825444118020416857572404875224537899409336884572273021815685333318087303687092407428210108679993978474559125375673169017915277864869673698733583043544512778538211239541585867012501233075281372121320474560990261509252321405206754595528502563613303670201996666611621008650782698219115353001330037086457071135337223452280452568517007739838490978151871164530578885616916564359132241501109657928076655528426574275043737261177706124582192604570784979555700738209005300451222025272448688375947966393916914057165066211684587360041617586832262204973688422204529011947124480825647469332666288372015891031704148067220516933330713180363558210888016143949553160947520018562454414284554823051095226539643775483568700590263669256224544107724394585140239745081201436776729019995113368541262643245383003632007633523017476153432573634062645216851056484225613949995175830507844737679493802010995254215782686238498102735761828454595171198601608664443879714842142572842088079599219164127623526465964533748946639197961094667879352228478115932666963622102150489291634031816301532167655870580808457517833994676877609066723153742981551708952525140748982913494737700190476622083524508081299934222801312990500849321722178138996367186518237434621184349719626765920262848614379750032387024400159965437382674696760018150153771534928790203262634910608754586017720584261140295700092178957519885927577985094685973065032601896231426024098019421121197847764329675570665208585273438445610183126628497239629976933585342112923087237527936936818856140276055077762316615544611208442393030409555270705402035839613872294760166758486370699745937182875116376027524812444624959957167622709895875135191226410168467445660514875734955037796456472178077034735505441084032892037719652640030580719229763003795883181820222064619080397411727732729282144048831194913742939880511621863618510456864108969915492431851908059090550540048124626413506416920963872548716138267233701607605663802752193335972513470021596706744669535729829351875733948681279826322663802275686086159825361702543338091341104446996890181344257164464909381965567043287237194117661284704665171474921491741357056859935154541056583173957568164171856336450121882622051151720618960888219803949515856071625077646905849562011932488984575480887086095975651057222934332730576448730649977094652714973734094872793382796477020918210848578447669162006394948080258574200207070756996547774562547902624294739610265586698640659993334665917864636492838062290586403965591370782538526326595086901995800365268219301732121134278587943392683457975690014676913745259920197476743731336009623841480700180807649131819369920446353692784775873588609989692273276225268045646923068172338335108432185959975825704604691099027474338819454192685385860460962509461685378330283572313899878985584618920990578490330155862438915112254468117178068086833890078397815103805204948858450741597822078208853853128324687255071527290541092043628451285195528680630852417094548969344809970212431785119309041424529487275935037167156645950201295464448243628590146725331432000844186270631827467833602079465750455004664531822953029466578984363409631038191225921752292424596132901484732365750801853479890239215803675237344740430766182562662743056038815821325033108505049493537814286606153478884600457231684748704666019479643548174596234986326801718197322420044555198720277437643393554601595656110173868774083752226872403248717466216925368677443159802472695012222215215547416491534431567674020702656589399085079917482326810108524305082106849760681120861901156871614988715979630368527033224412852785876288778249402592830017493043789096986883317277582079550134404496505846620910150958554356313885369915665912278063153637417132784754164913269413705107227730998370847258765045208062462578255830553830025506263454283093650467230450493221190257887082933431988796029254557057744194790452879836956968426026368721729605862756596070463637351455199006456991975213860523873847722005022708125781230643565326206104766251675414404340238871841571905409281479748979516149403293355443299303144074906123726960244362168814307580270911489191562846282937517317341630868578957076897105107492904383658405576749022991975695478648100957322782450458834365110288702669084899717225584132558808034942198694015969330919185277840973935040001544755567032698257421320558440808034642152680969743633353780486277447582373140924519201083795498294841206962424848550604899649090936822923145198685802057600200263504579361421260263770830414338089692243897533231064700685962452805610887119391688119833892995571857026775701441371179867619591186264185734370120323014479770063563418092301049854837733243854307808351212585819603720868600458716346881566898599465818086629352091623520069399775681615961575774784078770356955217823253743127720050899384923824118685775824958202601145323302078411020632965345112987892881163787208394341008468571649181378548692387639299962403813453879826603937219668636626932881187119529089595082925804702863980835048780578124496949962473762607605283956890606395007436778066879669038838290820757163837664673463989319298383263071589496375037811681844521830454588695244885449553319810830395169241688331205748407450469966173456951515603327143331943049760826878642815033052282800387222435206723717740256000566947796807462904091515569143124906557808009601319980607651518828966611741327492635218240503517705498110094274723557393141519209649187761446324004214401789473940403785673114180145673512374261108234030969378328744001819901672859235095303652225030976540114932683791442263261124296593980146143599321859451420939157147679825955893638732299763081128786107228615445472839687052928894475777342648767825590057186516201179819715850995853449112843179423201686998450865356780179893634523896057340361059341875781358639689069286348905706547024485207721939113649384829331542453735027816383715108523818263015182047737898682453479930941389520244322421490307467648460731450249924538265659330878926130942318428888285607491896336350137755006834299031699602345829348341195431111212617804419421346111987426243656002614739056306560765845862727755377228356818635296711420869484084069103998170940123912436655694683159589951424990383815216773723510314168810373023646307765888890702461083668323935630648451379597562327286895033695255010756616040661006643218807053322509857506765446435206761121832391600910925876710801420638295955554873111029344726484352671142241127564084812477058075346477338584936605151540484493815759162215407765493983561428643368804685231652881349795888989583632211546514700314419647341870382104620859183777021430788497933679564369904347421784355203574984767366277711956556289730945515172370624311690784796561140993093574469984683469402644684734525398672770043550211787254628243146607371274161409454713082262092978999540576515801766421054786124899016980263818997028412991723806745439517945543278277489326039337518286036829522728934434160716206759575952038656452361960588471952892727916673733513718999246980820322459999978403788159975562997371973178506331844316801803585627568344083203244418833261140013020742472556366772592882657496210582907335075793163654619871794905672757037675487576216797155881156849863516299009523115638954135782815341325488903542088371785285263869663883611468988053032474969083718880812588461180690849570259976580914204631139643696081211660251351566114073318312363181020903578740642045827068513642996560318951530973614682244800931367118114572737837610358693167756125267920761766020940450261241805908805353367387833854620161409503507202625858178904630242561744003190696717574571165752028696217841022526269582492781961365315613475291364369907628887921867827313901023252282594316694472176580861220955129924959699742439908663623128355463393846274436523701324199614694532300882859919275240655344998523283185042481921543964161400078943368756152581832762520838531688998373323593223302103217562260419578115666491905622376284798392671687555101805773004896261599630764594794035215288668381958888814333027731288825850776549128961977795213212192265993383790479305639090176922281554820012617902143613661002087704305825684117324094590498750386294858240498452709946639146828488948817440964203292215334132270479578632491035783284272846351382705546737443829998167473711516740449937601428847362697557836124952388337812193797084894998186535518638039338967269068064075768577884585137819139969138467476334989554152577521293967103650671734844351279580574505544203782385893072939911104262157181676332833994749163850363187776519086574625168972573672453173629936994523249608262224405849271197887665516508140795311911204582746132832664663838965810481811138294374167655497291458813576948850597537530447994755709905896360032418018959366339171408663466277081099976701840903745893142272876939777582742723964169529716683480602371125725933297879757015045375972862492002955234578729392087604143319915735237471578062859559613260883379051529682060053508679453868682987101982787098373265067581844831192617441071572886292407932334553686853441826794121287269153192715018842432808437084032134718226877599817593058435313566205505248137611188624077681024610814994211788454703901730184754170548985668967600596963763360957776978521763312661225262276682494985378131911917934601506469867113471952763949303514932257594654942457055854458242706959476588494704565417822477579863262278946383355811292923426361671839845985058071294034431374443012033274673268493804771833244596892257022449818654508770281161805635747715767807206504076536242782023416284835364668344064931684890235590076951980890290565982345434305747774860098410033105582442260170262062244487413408263120715471842829758393976964886093700346426162072696751522743575586258906786549652440103684118433368600263952895312203840566551371243326953222716469242031558166869423570778597663737474815892753932553637281060518959349011511807379477529456884975949790771706288899505098241417190354560290871061086629111004076580094274745359419803022049936210718845854999031522806841563603595037526184179492503260069278803793021255031539095201426458966028864587495119455903790053242211199935448124477811239673395343695967118754445046350296853386933423488222796083033091299893998712058004075071339569248913921065147298310207933622050983716239529619475670613427132676872653794514781112448098286900122755926301725836286243300450344572474202048084424423982389807650320058270900723167525679339149541090362498687480984671209342152197482271359036106732914121114287254018169310901294253599946527478795641344045796014350709727246645226758294736707511908354682890496781625032583038982036882720318367947483935659819456216035927487436111446612224466934772103316947041965127782676440144804427474694066778762114705306890680839180599974352682581245675448494429740180634529775675676812534309094824110871596887593591357040216185449746467455742557634240509685831294756019444865148835666813380357004861678512027828897027459319786000892482548106239866668340081753493769173250442038798805500338893589940479794891244900611350544937531777734231843189637169008594204988477460743945589977153155474687057913831696030819127956719775101091000766840944891355726644207181303151547315956478071928604125468987421251598264529213357738238895950129860914071091178815571966733999577009189672987760038969623158270018747944349629126455603537547072969344855027386703470496192516189653066131016707637372625174835704506288526918631579457564395836789092504096160176318283733580571996762223594234075058885630184740707801915149487309371265081854978524227989927512511417250999990095450338980713926385032560054359351645646055237768414800158507356078585220815858718172676508694973650002914339165372140284916158143121673972532379786416463824798445770184739440579912515141183768589306527086429297688541041664430411806891002216974418443239064668537489763975350669541627312685503653060762920327917036457286619033552285270078010712515669495422975334772966148652223755926021453361992780063237013515790136698473116833166184558349121253164531025000695492728690395723410910550126380197989989463063616454191198578838297015203124119233694931952493875936991699379881575689053752727896958879482742575045803982788389903347381929264811919274667599187217568601880308981653405612306517072060880201195543535319206215550896071213952393994757939481978344359829486821819248849752978299404426613361043180947504947112808667883972945715038170039408219408155575292208523284578963292320310426767678175038775545537201397686701181108317314253071242595237337235499450742754136424491314859075004142445865384839624542371291741150163890677524191556646870060059606780740152091371547199369475622048065361694578722425332083754530825617436466985920341622629584050542775366540474511307542751052567695017411206505427378977466660998301589535849472731597669818338616104680036813427220765259690219763693238133250354902747206566988354743623102087272887359470881454760494247823388422785493949309410603798352364635927953978624712136031563081361370070773842802119813366164745462133847194420705219586893225044722244503160489797853489307441326998628339126282821026957798487539074719475086710202402357848475749667240516263005886117013666333579382429080562553129275873728086851920605928271542462089955021951845274732002684513338806847383725442449130369814119576075079316726029945759630670385899078447632701781043479320908562922557072658313373112588327227018553770028691978542754867189470777992043291287057303549159710806023744987797718714579286659317948755019479488756756357675208837357775115041335543320663102310795007017432184284272196627965454157527677962813014463642681540945011197741786979304406584566421451217138040324017454769338866965660426665453657336566233324433582700567851000321912284455221072449424612051192532022115048775526251883107713560670364794969534369539363103540037730801071828769272364939764031699671606008177340641964694654751377840713649996542058149813595685467114691083759807638536393755068795157375632604007768814829644313741092601404099187507126495962314189758368291622060109782575561459248179801668020095672007322387026447332609909583173444773054025105967653535464689114784577752654681521857249177244330976154568602949739046430599206099590442519180706273196877144383475267099593304998076297081201038373245878807570387614262775305735024178278715351725276259706297469704941809261555016596710007713233026693187564771955923237903097888351821557480033969526065387874651319905525381647749100496182189391321009736764375731385520728020512589890570206421509619823866871675727434837510111053904641321945817326186803891513073103684550863857213243810224262193171542099481672730314267735696732889489488841666862706377234643415935718839058398550451058556538864441634009927348135307089470995626907501389949694593359502050031733714926445292923055169193051316902619304825911043460798236897795508760207696939472389095350447658958825711978539454246999641221630634338895640082918920811269332450591714474027242818314548433277575884073184287195448078722352240648683614806250481544845900221293418577195260673102793478231720242245440191832601064786424857796060151539890970833371736474214707390323519534721865688839121757311377164487851743234329409795973557759904951815399048027496346496140360947533514837606744896636108165914969922741397046468004451213155244762210950062841396659734344756607706341457698036809201796924259665098388436067025384911946697714165201816782689363255267538858123638043125600195272406459599127195369952374668042820207192615331063295833119684830571500603479733633870705378112912264512949515314597532889422479981028251406174820399131267647136838393146243459638006499051954100367026296608424597156293333377639115590834390553469833022783661697868525433205820315422130349200332962334784289400352269970889222395190074756121567511735250452161541939049850333034441624088845668807130751199479966109915104235800416418994857240454370922709427877824752359017418193840911223255170458097427196561376195966384447503478049806158946945390475107206005973086090845072746401480413921602688123664702326927381274244653271024984767310937861477712805277220571122273281934844085945587187882291569393753213485624009092828204659455130148434235845056234063953477182086588729921151239491377163307716526957564511367555539629858444833386802247169566416017795308422113822419398107865854668293343002939268977628989203471178165206946366417060946383022834720138942162984610208711282066209111074071706342354133431097341949779865613466419729235179783226760059465767820341879017943145600559780077644284596752652798623752511102633596649417846410590515648919934346709538164487254024765850590692743132496343196142381606750824414417027830372104943925954297721867897351241402334535857845460596422399288309565972961166001534998635596788973843693150076389039811595608193988699194694635939468299742716352628413074226885555329293083792966043569116532532400443022381768334834423735056549548543552672947209118361438845025619362306156491152646925033975317714562304697340335632249201106024285613280883604607559204658898512261301074164447485798479879277131663470028856582368306381479058030715610330045842049390604298541458330368764874979361029143424866516612083135458441256112341600639454811913354519342085984624651343739605811532955084686779650690372348355369566153810376761202964161739185861437180542818092655285937660640252125164870104187627635849124571811558738349850979405053807057188332941423758868933606007349853861875779752428777731411576558967966981876617362497399346331354871748691640302235278564602771289893137161584120461365917682086426750089835280824088730612319550024198277741023338633563376676189846102617903715075182339712746124271993193957146977977505271093939381360263805710921055265088237667760394004976693789183595035418946395142166122056692525310591627303435530996419377784606535007190683078251745111001910787286493527421208507242953879961755405212155731292013923166697614222818742008265689156204313190515408449093644192228268165121499923122423062859172497288413726705081613193365146860919817441227386243370856379457273139845285439581889475823062846653304113801271800668403737453881925629146153488207708896458325837117128871454411931687768053277401142013757814321357917692102588741641739254522582557161073016269938305365489177374443510572596582680894632987923800395249915186639030343388201797030182509892476216438402131015254516040063228752387778624237027514865810915162797325853322767327627909281598422918999352550540109311634017970297059835166238057611731967363693186692045839910515198384250855743200624223982336681603731486662932541239594235066975986333421083902357769530645367492455267282990991322243645670392266410603617677457504911963188559462327540978789131377590905428124191246011084141536478712113593929230054947236179945759216171976172412629944218168813317766987931550671435617103016821432337765955741263629023852548158589776221335510865039608738139535244189915489727440522969077391900570742272488826386981487986367722978767760079278770766372483909549353791411248604740352401722168946944514516921310697914317781983661940115299841424002405204979415815175739544331133885427127665015200673635915173264257501765866678077488926479880802795375504706910216457317573213056192404346364398630895877348811275579267115467229062996113752857010231683100871268892494250319354034708575655538284149628801279756423598317729709350965381866039120057668364040859253423220758863225176298879073865003131836238182144556494034000454234352422232070966814535472600487581496165397764973975508542985547440126630914683424528081804813271439076514198412304960255999134198837655061703768006326607103578428115172392267290304660790302512925786777996708648448771559060043461226642824710718035525833903538451761632217144217034094763076217039762774610565687983079877272545823800570886436852410867193829949375466162535137010092743203297647467448079969923295513651544150316879214344493330758885745474167587370792171455015376884059262254481402998587551128779152349081257625358031697828513880628422023426782866428072477886306360376382049132268987718888190886284112751439893328707483958676992586947661362153266626970730432227066561058722247393837341562201879228695912992272928478394766141317452048021993539695003286194705362414516174976179561671934504149062523870207647458245226648187145257121779350078135559302372049228483307835569174356776481937695335909861898182595762460657747957364249750676384800952219613231920960805505941953015885930424337422984231732141773738706295846828321103186338395872301475123414343442744033352228545975115208409616185337617273986072448464429554485743954550398141799582202675423832704368820876367338695330440682442755749079537879559166333589077970183232415068873639357083131893614341976840544566414936575749646367383543303013971046884114111060939294773201389035851445045284343686298686014184454892464541195257799999330430694498361941304856223804858917183611666597312266347230877562668379256817217134969978100373198150115016017602551411124600114323240123705748519243084518851691888499948257236331869346727323481474954281052125594347618109756461929620863306157655729356000849459815324024412703576020117329922164679614805218198050985452923843322507303866087594982979932671480119358563113858039556116143469557489597298224112342243877780208895313934273699692543854702072356156663245285460805782230681029435577741527420890685695623957774159077602933539707711068775012209097666100577765503292511450968481521566466174389464566497847290709829760851566877753790512124350283236974724460256830021297408268566914359592619917740949678023420778222968045799318104703930746076444357513837215098393440157705237108325665752734949024330798901014946359644509811674545073552322261954924273882468575539212962123606677104609341850199743267253105050919811141671028193489195146596623166295964154482011030229715099311622017429048067648215936847607026591501764582360494791073852036206499412032277442868684024082121029785128695868619459846428119598626218440503178486812374965516466510403666236552501840296707687597153542438065759476025952723370806356178087939196123995866870208553378435188650263850477686990985630896706401747205238159769260579829513423211897733158696530392622791261735322027994722259370567443842489586471422236242945372574700115020769131096545834301612141344589834335641206178008793010544016634747640186661464301941421167434529283611930771340712293188934656536513540217707853067428422545643711135010257944553218650204267010827919815366570694380320055118216011715209671737229478880644998480234132635281150329367042872616299482811908505825478771859856844900000994231575137563157664308695085442622748949256663389695693743353892695039606105493915497929170557379389047023554181025143829246472712434210498990109949234778091626145973366593503121281705472157995614194836610400305289846924737345421453838632356140600714688327819842189937524742195529991060346850661256341437259238045114666783306534084987345913352250391051928753142549118957492645274702433075433742927735260784738266638304558120922722804838094114752127968413355735126671377249250841792318644109086265658239418003940365643663947307455472665897961102421533448056440785632356930895852613949751210565295801924863999003370430700580645680177218974958272504797137314126521245117867886479318240520869224751012625008435001742731793756251590372114273541907835966173590457367804963137831552743637054530669334400162344742666840293707748141159775740831914308025414889473345802090325007243148062044075824920806371808871557534975062052624219912558825327756717400343438449558663084976766466617072327024415937720241863435331570317323952113746802926803420595629044114795057921684168722821325569046610699748301332049289250121681094007443993546923487226043537080051419753017795479309380034842382717717641559194193769335544693680230892434354182632650687781409859635681204459308559069456526333045481614596336857780639388196422362056637378835102793725912527217950211072699609313494859871862870324385903885133203090029973424922420543486539962794113680223511312708566784128191524790100120734465960019709285062655749965632938664133852723587817223031853691525731012989232212605870529443434875449330764731198119401121602480409741003545417909955514941256071491627098592699685745006280251173996666094939243239809094870606045576706853230081795887168068603082461780121046975297316096175068322678934107896775131354523711519209598668809488224155437194915319662440685379602449353166676218601453201596034194955689489055340618330556796552935389614588059107293507884310040928047248111657795861035748739975845759310876530312371115961205772446603720424574962574384295817702495629505971701849899044804156515940783201638017271622058578531408542555346097204062259165635130909106738849581282674366953345043198508981929907709469296386799779445463161561981716411743647597383085237940427593438487547738712409455290942854741091112350474942690683211175098818562925069212355608863334274207629490553392368368744983497383568116128021603134774183987015088395750023148322390068059198972701492806656551606268151426446186169111693609739239125386962593721899686132703360843789545826593193340681491679848661980689575941061418497615955879178734525138333777283215099534930007065046636711440674376031086682645600763521300832263014965707008192416072833764521830327869556183686713753780194925849690681311454052665553202700619233641437617829927731025022051528379632675100815273185368489912781079971092661437684452218316270842733737687015539726042923792182198130102896537546817740381970625045405040135515274584340250298966264826519543942903246826958713873878963246485338256481311511781629977394799637684023869970906628109587165597317133843828632724082378841917159439173503167581614930720349967663561406017539169173954254425151666616879858803592179094605013978182197368150477397345295955464889150444846365845778693396110443559928723520702616082526063503686092604281777239793455290566964545655795302804499067841695785365893098568654236052160206387844575734713668272453583624493397801308995202124823501405857208956735583853334952074654377007127849399020399221424170382352251667117086696788129848710105653870329334951192631492072069168132898106947974231827050368498813438216308841284454590262191609103952175730932300886390040547310265343060106185306243891815125961341355157131638773635747230361417549686485965493173617821112537246992024566867200059066055516501278539759117752237505425879460442076630191486361544121210443140666231893054576694221693222595193793578766857633836831125953574659297098974835955509357968390780128515559303763308675864941821664304642287265091467955316445960415737557016045687869389522068956467678449536570180469996157426450663845931740225083054849625677502744706220068380295477614913681118246937509738019239417596459365171598266646459711141427630187363318466071198788559967516156009301865634945203594887455029386485536048830408977025405717572572580314191564156915462621068138878970342816297883213346337225990821020821798477931449015236144385620247463151018531001547963228528350751641390109125720594737695950649164178374822013856938636915027051443741739536554569671072446935451541115344880434436899154697228046642618267662993160114007244199208469981216812917434096445699408904350662991687809206233301450715690820368559476648459350268747528972576405548252711626749491677593996947165738300007314217224102990938965554196831365438601041151007296219474773086907476116657657935168187918685592240589524776405750869276345787704746832827978108661858682523240893440074933098571308188854337443660971214401579970143707506250016772493961382613637284238174186354646673763241488967060025063219027182121214233377494111410671419652315646513765643595549743712707877004839549178255348597320072514254318886669377969553005405645790894730004433250421138028101766441596292890472603672055849422555394762932042534649845613595927632028654957318731440071457553858903348864058837467299600817256209440002732833194562782467037902491973574687107570206295323589779751295430721445909855235531579650971898134854729019830548168924820635189156897211685823001170923320224700190631282320033169849463774863600008881751521776698652049363679196933919618165324305837850806073668258819055218732477431780977959222354946070383139521972948960826207793861003318049093285642765382139930741114192889476880278138763862816735490997848613094494514781949720821551744471235766437958614915022218309296493881087268992037619845667869393051791260458488339105588769383285781359916762021534069178366074204114062813694546752689624015122052869537285133953602803604620686264772422757510747340194376524574560592471794453270541525143360897211916458974350272990875395577727141300898942539657434756733882459927190139728344564493987976924998161399769035767637738028741698932930766339681000636102240321885503607041479009807166117877087497539851943797660070065379835514905757574448529412625450304816387404028463377223170196628460017081854323299645595126996679423670120832980466761910878416341083331643302293223031214449129056693919886259510878427057705155909035654452376374592351548086207149660513944242431519137129801132390585645799046280351213927582284431224583999175360353721608125540750168456312824428663312239298809533483246638559843524837232864397348494290529195946776934589424909384850604876964144779610542693491887228668862353019616262582554463984405629146781271463903272846875143757206929688511573741321302063954877736462840747774192764029783538962617113599382584533854676523335840098589556712742138779369776446142485771825876072275776083345084122039356298394608543777036158962633311075659488435687649757443173758154759665974546289084792620106622513928602505118227343034811870443140375965211154993107715999109394518393705056213112345887239818059621477003199979340770891315376331994361650577035033831459971606041291183368223196156123220808270957474187240970629141772285724126159663915002481718734859042425583968916584308422021923695567078377356988453030993778013611439818215712909753935088789189150154067185252429670948466577420344120704973238418724033053738066462201822848609609180228546173345672877163231329297402634872234427487887274882577766118112708276419012849793259751297462257985751650654389729616461553467686665592488789284656012189008107652422151925180928428906492892896512065883428751013162080337425365643663875379509651544326039980347307301237211566903686220650152168901109254160375309116970561772302693796043025632079660700189212597645786970520834580997165693658058661455583202798724902177435760540909131044791385722645989259461291264947081211867624356869116186818187967289799829708410651687616595674147285601858385982279397258774561611448142998936343396384905783482199220237523152052520350570922584928510165123128030574492096247236010565841253883555348305245667479103038729201223230819738839559584399056710673255445670131223435550549233575949161858176743744470611817743241856190482033233241242194690370698816967072121556476733405316728943318371134493583240471606780824896857893607924114501441211183452371645092167239221750512394049438109644876030557029598987919800838824183418221968063788233233471692902208789677309656387656934391798296539294197770775000719679774174772532826985311457816280591495328382522374369604210350545656109809178057956224387963834667663602994291587898735108835027944034294543236856003206338646254283628065011310609891757295265704066342631321904670592501497669401019531495812921769775523706745842424287392256625494965737753457181371881354903446347609562043222372798678508797985704459791466476790387985560438258159049563606999198747462595747787805847440379340334093434103553483825405831143025008534725178922955972615361776856503906140753576728235089042045145022686980752507691976779232050313581470219350477202098547821884497066504699152090188571254439896045101574871120944533488680217715084726359876534813749310149995384364902089714056802766383491076185368418561588316858056745953435792898637981526028432387496002641136881851448846894254390664874713898453028664463275749951573274680497045372044647239544438345706660125835516373000794303088415796043563876695430108103402638898474996201399834539388147199673102861215406940288888925645157827226381603326655698609593726727940557008601704759009104215907028209938787867466497691619530582838524387229980520699966984516407214643640961250357896604144212731459303639419605205092627868922809116805222809895537328114335283660050226637544504852748880576965313162666433884599875577261974134757593211113915679448406050205104667493156744532456837016625299336812484317789672558347701699031510849692387628326250556429295648619257534265257714861345836957909520252571259465822356434293482860207583889194870049114162305974026031903358905475235518897992319060473921276775531161126436421473383966689874852725624760836625622969004189711732695320557705124597300215453851949797946565523441550524585710403142782215305265373408436492756210549377094265757347896747368431355222369103588354916241971462995262245982115410776814915902432031658821650664294852970381335649284664330878573840779863936438822792163245421878667630626640442084877835409799195837721431018950333042609534965993382712569395468684418488541250916690117109871125088434048136653142169499152558148991754619993551958945351528359080566963171101196291860138028531798763751708535204335948252442794959699832921789490958382010050021078299712734597343865266395772515032143284407431744639062344959563664265433908514958130240522884350421592865030232672048952079779717036329374708092117126976399903586292172003307495416746638383407330062219338363146258451361897258742794431762398324685215853422776810925162865754696960113286373136479523684518393035704043842605181782569273377500627206167701561725624305433750539482187820845656388331149018168441114193414210856059809354279585452787450180155874794972632342352694299053377937364951595973536459621561492284783661825242689977292215398764620122245408018556055594528045431154922439867137882782711068799737858712796997124327050037140126407471680937587723184980668480417713183412426762942432788415738175386215804410872685061970491205447173699598832875847611695703849798547883874902952583628509236618725902592747463415602613487709813340289360557726939932274542467104122329722759114138939768802503237883545823657863616569437193799238055092594320173729549829227078938150565110776149925155456265763057441596309713281242118667025801765840710171209438833854012042020771262379955003007715279834875972790107723028088921696630730189009566034705334278866013280365161375421782192235685270790543913736450966921202210135238552527450376303425648826828327813739709884753994195878292359911248647522254916406344349370210460938543929258832272399728345653002552414020733388133986821755282511027478573949400379979946427363063139497387016486910485416129802074724587843888330126921284727387919539371905322317714028487692365723827955234321484479256927481829396632012225091072634803495637816214675945907158939920455299481387965858140378959805160889725375879970699914545587010031040441378436168282361585028042633235064386258094068748368656075241168547595851487294765519047471428969587683161880343280806602218237082047023068593909514441202362435455012107720043398212897043070182796504694265266251992036418926706249399661247367065701056305038794545645948785198520484453826597168402305168448926286068008184470996037637418013111064822791521306236467595385068865075118750740699526541411832462595125276498669321514736162701011074226513442416366813389972147316703854862984793432087791532028829410299272446366793054284156834913088966876774818200862058597108337504674661563346324362365515509291727965769732858651006453498073234401948436388604665059812850209375001317034323879992141853452012458085852377317456567848372077946344110743447599912136143904409210668089188094141262121895200023098198364442426031281633773795412258602349712426746504287319311800219061694178821305251053863517660347170914636646369278077468628023625420402707403376134784050272483341298073983008296170024245069027313465359373873210453090028561724842078358140166985055461560755077258890023935070129536362004858988283074000602961071917270290895953921231835086025520381404467183707844761089404108864985785722486770569124374547720672217260996848083151394872249038076642666313837234128552885972284111953587285323781492208869358841985616171975652229026817618239848147175001967782954370939401485694893459264928140130315341047706490383880011819027355567194948445418653575154495464238092309453993540332504504071575429860825890131000216117853747718010523849090772775731083784005317477169107622098402366284973879937541784912971700107775538019945136247589824109723898123664995374666123276788551336170397258445433275561950894643644287603392167052277741322683797614946096490807380328267508512713252189589119212440090020650608263021603492782764156891745680094895761919512409957186526558126116513583701731917157901441683249985924367668370691219351569085571971403495966918030603165259029080223252941375725538355354509992153395140955693068622043855317384920700222060127847193228705354392151318455678979665417787079550828947067614622680439326314538227926568909291112503340009019236696973362027459080788877202321630430596604335490388505110392130775550492793416065136339975087683729056600767757456387053250443911354170572056572263838181930815873658369526226937191936040312024957306687318703757511340024930812358128829848765023356568396125536615536650978148070655022532720121770271068637732761812987016451690075552221054901719447571766009657587090385785517848065589878697161615102991685672639820155008369837352984597043270293371697818358132832470419722356612135151213446062359055111090501879192128568473292174828689548001012783926336569874062964666321470457974090293729057066206484759383204473014937846718662233963147897561173813679148831555916351736852175693023557552530434727826996204057065382524400615300641738306252909906868952838167376623238606565707166621055888292435312210625849268938157272904945171968475630232443304780089574094175828574656414319274882760043257665479829999295543918340507706139083261041514435999820572123857600111489484579466306641392429572648550288590405823336468129434160746000017797765829297388704270761317068253120759153193646430965403850573287767800149870770670630973330113240321393136347671024655208258675638725776888055694926478022638330371863471237326231887907275363698601696567011716445328235535518289173338687742137727839786416557099560908615137258936834858523055036006222869536141851961121695083952019900813612203742056229472724403426924030606073873786141691314222210408518777119648646840358255365960671331739890059961541624602219816522254092046755914185439637728097892879505425740412988952335354702620511972488883810117191922953887608290378066193885343387095166749980386319923043204079030983344933890331655760943380632840789636061993408740003149746559443278454545031913245138424055135422062593638725937472359869703599668388030434634303904937646007647539206862481613554421865425032336073145930655262072605852571042593596651708721762503516482590062711294957405303787882386763382204146048739038409172326383823530543344759655225818140699201277096809812286052112538111575847385800204526850390635072598345591279229869284543972046959877938264501782193717855023011416832056553250246712588817058713676604205504644085520841132845162545938080092539183469453252382159886594442243141487879728124655264231769747863852033466516727547390894823491134184220018771397407424960769256974021825524465905645022243066969441343032303164697424272876300145351311663968028814086496557350207330086761369085902637032534138766303866608801669943248647007766902308963864862669232274271408309518500948073997257035608993061234932543341109862447634037977516357918256050235208520710238165447477531895414454494303621131823283625021650316857038438122654615463650472156426071809397841803760008185318861816525670979811289751406227483008954532478970762025806281948590545900445428143350792830809803657649959127129965230303259365415027249152393156675362671761908509147584565041756291998073594839141835140331423125520933620056663398947504295994720618443082713133775923419240395075911142499299461219842019622451492704386576092362461061399102855040875728113023235159278161911286311176547199203869755089147835828897730454785953438253895716208670230676079456787691958537909157934568511762766650723834630931570289381215037661233664288182237644168388570426466311409170966217660222434054433407458043620772150005638725809426935857402440505189392698589044438545777910869617435807550185294079754841042489966012583573193780468215984356763348683040969854401041550614672799671162931306687887313959553695122197793203090724693210142477881249997476908518242901392628309358133955224458739244491002196986249073538554326994087569354104262235246553262317998638043172036927136222484542845716890717082873002209882646679863718363900302865627022935728088656128846213738836522010296510430857146973195055846947968030404246422740350702008964080670260380657149357487575521087256678697745713900205924244511152896536244517074046219088864503675523725748070744797905986731220547338959717757133242922035732320625422189838650676796358530146329560338304373597047384819791440705229051677432986401350539029055824757386642004781298192283949076329466982928298795759762987000153879748488507729745553236353936435506270250800937984628589185541845279927280963783706220240877019149103491044081380952914805621911965022111813783218441507602500807158984036559931313130974894693939835380707918508862695188186217861415125596962024942771891117324465728789279889185794485985735803746688898358317500930303161469039437498154929467977154515015372719871050664500344896031094360604762470428057356791087414436606756412342808719186031726805967340118504823016561450284242822302547553740013243535147221533030693256372038592115466728731226372267623167550853378324137671577745713886628395665248437944015559897458172925245223318375852448009661692958800532843522764057946450470364770943151986008366287705300606669865197011079105578731884669646388957285254140496837242838641251081605558226734421154036774723119320315527274808301632032180333338547802399062333054362752756594222954691060313110804779150330857289649277649522882954485915907305732667911162126602152125439972717874370576657387692864956244982789828513774151315592991992141376827468107740350203772091005244714223224753389449547512320689577808782613749926218232513314272148041960507293243127347733162923941031176519661082635488503961132551349547856866290025395739823071779770042289059805947897435109382335775964585185373163904631819121000837529760213764961882558309422675942791031020448153166778501731469388902623045738615054777675291351916618745460555674612422009890725813092766376059214650548877599540372393492496999064850245367846600202167616066133938655580795733598993399133657417118663832573488527912352590026569440134597920149149139231672258148856019382046664669820525538666049320498163095311689736095224621300534615245235524759566277729880249118832463752991147518519786815101573106183103579938000183032308606668396964284393537988073526885255159969736737812843483928746619321407877846081537798278819121320407157967894218684825174934560991748204175093969198812391048127038881702466005014776668250403615769432410011201365805163916332530868060545706780201713583549095136535436677798773784515381338547712906863018262506465578469249299540423535694243734600483491640986072307833436366974700366445830198140280677215390977311962005853452043660326836001017692851065930878776352630100095102650496839869051518646468443966929568454451320016156061507568636227505697313611992330464170526976737211228947466545663266878001942736591180939722034724054565720419691502284860823915447449207896597127907824183344665280858958675214374504024840631260790273277214444922228859786615174326114494237782189803231391267421516357661254347577831734010618498280599993679824290255208244322611315675909535614266830448669813100508896890148338590201846213319007128732371854258831442316791782114710736421964833005480987905352662470218149421967822082197971236589716133279578252599830233587621957598938153416590762516606120073779303234366965134213415320721490038229171484980248379623764311383419702821755981190128945618520977446209088734469981476760097403791088320053249227366302353520996614795717895807114398170280997252995763758375844113389985006488629459063448216340936971322374423862553109785986961097609881763630860903376698055948914451247098644173449902984553715212571139092336269165907205441866185291599192001627342779044943730471092135301228455434040179345897234262004071518873110814568687640893893753593406348977474600097900954347779527016931559062102405727927481430025418570566360019528222683580230959395233670711557547768275247106836421186978434786791264739636419350764463976608840490379697712501195073359597530758091264606675040889348636396428243894046779573176346841291253605325384052274430362573049442545790792110876603501149980670417134862080389375539867299277640703912221188437745852783977861932791790570888474757805666811393701214104768923630148256321775477854798516253601486038586517523483688072463006863301328953507115154873813915881459366299443561209402192213414974214729544767278546509304224818843953260874600365002684634695479607032143998565722867181392739388084630670141340295088013538283595982103522801046941297571529930162255473146653753181598370886163490370125279462072783687404043650392613183834676053040201151320052524837899597931362493816340445291082509811481332297734933801869067079673830256262192597159372894600667930526074613508075831038594322211558809149206717341638162368960672114525008809417079512152481253647758496906160860202434813163113270721233730122879042405152880363436859545538456730821902368504738165541834406639904770341123159215458818558259941456610179729616109844533615352290737612826973257888079131771963164612407054186342884449134855362640956147825444105349184027919800907555203412680407175459831772108192697994496796801356840993387930862793426315161294919095812336573409120622197263728313676014338773630806005432142107824717126779036204048815032225427440006659007043653624598434181383024358001611423866345937309223929025702141174626933192476244026845433342430029030341092361012273950028229714026057368116931867331570207182217127463886045791410729866359998951895677331038182039936865150827020874707011410750633681579516285754590464378951063336885858594050399538705073971195588848776935887374019983255607010407332479644239425618615936796159601906695994088099866504072078337598403310957756096243541729972467583186418181759723225742047695558924606252277527525681293564374555785719602381603661621970046114802974074146767348300946805772303360429127810308497750731041190403945494765166429388612825609644503597290994906169113376404348068515685414497260156544881427118913014228271464383923483196343430404323187469753510426954133065797105434575239320901400765455139016597283683656765077868376807199788521806401303858570801537965148245307009312896156361287920284387969574814866890695268972780363055293978107125784657323799586286537210235012831854457994664040168496614398478467994900132885772826802895896988059818588221586122528937515918006214429600901825623002649942635449477287896654130352760139836019779854096292000649952053566087219733342703960758927359779921903434723097034359169257886114774788437417419274683552526868476568193894254913547533985085214704609801040118878043062422338067015549298933023771351038365126242156057013088547322831996677355282188234884729455426473001954376694305730049061090993129181570734811604428837578131901996569763878107005153477305781149385609103768050331963079495446933653227317377418378998555558396548037227205366279614483345557054935576969022309270221765610657836234429334506254593296264635723462232753499304719471925696026390321595823905544515093167087424596010744211353355195559132845232799820850395428276705358294262074164688155599316505994151997247255508237653209034705823634918257221705601350073440657502152316922436717712328518672023515140252039394104893253448248325884184660527782424244966977709234003596930554752737534368724369050672319370197982227185806855341422287419991304659948253956445278156537486287109888517788493252315322944081408257209369213014556509663697496152206255312825797590968162593162741561914159368775951729871382337854933945976712792885714103045453118872300487306132408455112029438245582859453141967938318697011717037048360377796519417800295269486828099264055879626960295199921530044975552078004848174637494309303800936489447887474855173597795636212297283533307324519345515009966080365667267928397216955619770406341000741515518338270694261447856446028069260316630331268991614884435207494212662075470636068170319720551478248642148437408355716134743941061856266311839866704179163362904322475111540113040525784587015134009141405582556111502922424956823362558579511592903041515690660206205050019303740546926415445528164674157944707342772750457494699977829477667345802478401741897784248892997679065176293200028207591003687350194407705492056776173050420003762087315978980290393430091050331757447875424194307517389427084367056624433446537605972432861601019721819573931324907671522877728790169290159647146574392010330962715917225019569809375050050737319636785309486482239763705350194907950920838016934372427444897963800556376284326494120957465182072972491031013388815134031329365291821627015344612636154826152162962200644374567703422666483952519132346456577659076436714093095412013336820079150554092416577116435347724469620525691779205277571954758353808031397618210318768045188841091947067656678611791881815193247310410679179542469249308364333198674072342326516499918374263807068257853537923461290512463022848552626006084954332155756378017020139946134534420978478044686202024672604912089224003640922366738164819946332939445999404292233755001961363652954137709682139658519334129926886923304404587830356704279664328891124805272343659525970508884428230921913308350659217269389205981414497654367342833364449900445573017194192898039339030897907440940208752078460167987235715002934875348140712733922730898220063334213054330778496751816862054137898080753022141341504913976125393522955505382836008765701312565874952695491166301986803417374309412180072019323605155749966452195375503235422697369961895086487145916812333084772891446316090842583313990626624571454290781182416914062418878564748756729129539780024572754668739903676574471686353627312079284552959893104801427049524823899250524089389960472671518752425457037500407771498546750811815211705367981502902858630328477993146261910183957221577228405030501394323637927363572571067115524585507245836747744320753893972445230024736147329781573630472645688649797105238867489402897529250905577518928707910167818199944314231179246941635657359126994919488600567647523815517304657088131447860736501234415617598888764095067824068770981067578460147031142568795467426901093524453406121641864103246540013883528991903801990417538609322894060324052525228308016525667207893889128880396620327979261440770782667965236195225079140166728726494603377420786238670885614035851075862245040186505004145479609510602460731523804280988546913798592759455638057595373817890318145811473922969045763802337671381670766314283140508106502082387329874476658599676081666269369081220657585256067622425779093075285138691470593160994911078627458424140165347123947639363543876200476449915355826368665493891406474822005648903806006669151345250715425498394969340997025231703709673298074596975647508049654021303337572595166835171450530257375887829222587645117981555137233489022468428485058942342803732410972913632162080268653884886266381552412666029137438302176804398257073433029591061664670507097387061370561846380782254691199220911815495864912879756772073943567075706151296795943391562812632652842724162369432294893263928468904755094761436467440733283270563407624217242066533533703607682538654202712226941361889605935170843596876593472218551775215892592226894782760643105080355329602453374401560317415051692159562846727991742661406426697170789419417783134441628512174239945450828149807755004626755074466653221112442654411689417285723096124749569470400615431645879443056487244196088852244254222340921879262874668271424545168573156514215248465032353332996767484986728598013644819092060940937409628629709960354094725016078189619491472761958038808253553918332757486622870646667671831421681176258180714173882466299524166489362658499917677623702022888424561605763567152068992885826131011728069813095990834667080639490117342493313668703461720320844093194793972971951104300606431145361532197100464682120337141382671796520012120002656844454650903808380160249863768803255754315452232271477693164025166695362026826466747420911170025042558690225706995772996277506369603274117652842578621572476108429912220646606628531110502152181738138149618944761927723268232537040950001536487606722904613942029137892404469491910967624221707281135404803922574780096883128543187729743722253250621546435330831141389078890272600344638433666644424559974843626386393997778908395345352012018233477249445259051104959225482593005368958188963605405252917326171785104428830113769610767097569116000371713955356441485955972233612129448492979230054765925980043988115727994115336748475706355622352156605116638435144540243639484817747163129299922308267593703003565867284811098851439109886128088420589272125081919332121845256367759213564399074332809254782189737394413347470268327967373912342473048941367751325753775971614264257353866512452678084547405574909660043442574361284072490040577237096144483223640859745579791067464896355823020104291877849601867886648772527368936770721837336629566326507942170156085006834793138461372057554017088854153834333241754207915253421984077985757486634690851842018515282922691144230073893726240298029763815186790436391097041233309064033205777516880457306479153445343529236856460292045352201547890032506597899782085118518924492345250606201420298490266897497675698192051024359815838382129317320425420330551809483584023469426677669070031890590858005712616961700802704958349888888102551528868304359126842572827338051340965451072038644683194430798231598315349875209985810194522276462228864686613302448309998295258191987815829536965767815618834616574441433204989685984952094841002603837382389090458628955302162267170275856197147439414446520268613442632809585654286925513866386266279868533587339184110900588080599670454224193686320288933376280919255404812815677143250506339565748344687065544033973364963112905362559283425127041523405253093830668406222887501543796672066954701848504385190205213138004023645320736374895413854722733182915477377534679018157177191687746982263962176566685502722338789327949562103595364643964009756190204976102983939784485121224314612229427405803382110858355711505542423225223128434283591246746740601512166121554283509591241666899507555703545071159626384699292736825330240426220455956801006019757054529832040591747573748025297519824683023678110633501919132942360341940369964194747474992331085193710761608930648729735064163755441445635948190507475074341523283835002222912628666629389632804732830058506076477500828868300680865808071608823407863023106087035600988760955398627345051114000401666737905011690955941103541731286068405640729387125653766651647828548298848688867263432976403235140336103709553013166408924613503572906658400751343155638171935074392597136459899144985859624255849569295279438676332831684354577042360761644645426890051669000970435517957652082165182502448416793021034513681718453549821736673161788309566849709051820810127501535839102421112211048324724501891871813463496215929183658533369984677307133995976633018688522319459150326560153328500916119703877420416184000477804595074968897740121640361838265309296284134340990787044063182238238403541710568108582324706468579715277863474575507857019750976745363099401638917267242018743231252564455580424934998311758905457956642390737546627677914394526938392203182078479807706685254181412634352511070670643360385030709315013253417152674146834149544578624915482415983805218973234264491598215001825982946523220049265703740448848151310194840617463043806663808526983605149131885016852579998932035063051468034009556686104934077466594570327613596582526446321667241563493753726048371113045164078006506524586536332989575975576674991819550819817328740589288866036372280691086688267508469751948928648025548094539794496319698117383777859778026613603813939693960070422473875513012593726495604054642664662790551352731787545788762074910737478080582002694710115944112880731199900246704324916890070889611143023083795823301165786677655456584230334202953708158249482994542201186880433961938205468678235202316246484708317557483807152574947882190503160377857629114609486017178206602166264950257379974753448672195009393126867943579847690897698069244749623167553419624206680033500909423772763450990192375765798189172162336952168144808911545980950598952783570579339555728695085227970152887514119660988569706532100234940472249090720123262890806367771362253935744959511342157293654640852960035254203493705852427550531124034623761516087707017426614399017556329644980135225251146872087456986761015171551227442681884463154691298328267509658055216724101226529442146797842392382653127246158124495358662081887792623257581066462178460231797619966439106118759280268887708961028376858107676118260627245440827442712679589894695917810849498703302620276299162796687967553896183229121552665670640980906626829494291250424061642064159562789138712407785616105537639675263326475375926911378123846010661714166612108787842337495181478024765567329634303712175528198124846711124779003108331390052893599571527734318186820412813676630172951490613146193151520229038788348383241059690401225877878583387777907402196613722490691312779416317263215272616454326693602346030206185241054687963955083783387143265479404748869011157287090591079526709552366107100910641082753140554377037683810139334619627637808444711633087928331829176532941794892729759099215481133907831193353443251329673554768256052176931742768382584351001744484021254637514294334849564738001245114092902088501369396805231214854780996603700076439184281729092785373900937209166446373630758706782898433211508190101606967230126942612482790482759506186014339158292581280690314806325516708474604749450515091935465661869185781742393473905568236256734658691017444130257797414007619017776077341122796595342223020468049221734211893180882428941032304728880043148402206311353597537866553117151930757724609301712008304474258226358533592940600875183564276235712734875345315137208610212264999884076933554319266357408129910723330577939205669184158999957603975648907315090281980092400985053537450154729419767588803857741976735483863541366874647435787754025630911799276847950713135162048188413405190874121996625344015154060695504661820879714730842235139146121788185249123231387318821503460637883018464338554844258827851166027175851276071059127644438517374095912138769376509243956337727489578811693927845095387850811068390409599119066394667432212089206632588737472691716820021755430382836202723273460539034457676672895829417602285345590166290840250414598633884257320697004090188953759436533513291565460460890452286645167070583354904167685380187222493025737171483256054245302296757547283751239855813906677923765899766928657025889573625190250644878293836891393413718507995400474776428891480110271315745054059226125756344697340673666618161523779500396781371113776313368098178518747299321635321031549452821053288003600705218559912110854793572739831724390909814398749365852654855780394433748729343382671366331250651663508832012499636272162458371728193885317259778388254772464085854722209230485923843553299749690402833624713180883450118384105641701862276149433872632875256605143096137260723076415075881121569757641904278504151097608590979731805564244923608707568132248754892697646019524949434569623145724978217890895255085722682593163235172274161585834322225839452470612528441963218828803396478182990486107668665621427807218484832030433746012932989272106467690415336636874363095286948808190683408433300535724026733746498627742975280688176198265350731333029466876987236012377630147085867332830676875265663926989711500709764588154696540746987308186071304837415592374932842803598308743468078833806056224354130326798730274855293742599772647844056377938377945207482526326823924270308304110534304768892661279570656934790386162174149882293249776455651027922615085863948118946380378318425867629459348615018664613535969621144755596788372494086036657681190015685170672139479634317851277814492731214376645928803842449607164491867459897670435717030506749960416938907531703862294550951413012055846986616178323081200673559064464516949106518882217725881511104656812483006171778812093577677805656700372306861664725030824193724323438409906894980234324028524472975243447913838387093007799553144324895334450534588530894135001702515603415132476716710514584547622637263423094601792989370541518541918650583458856679010425127323927545262345007887757494133445107303453745854319120804133699109893341687067665301904766827247738385131680817631134034030952243360363936108829568650733191953309508516516147190234007067230577593923541324107964264787895671845020086575003454769132036672028333177345462513518895584968538572221370295100083911468511783162953211484287099957017611337288258324321555299895171154709575480300468184265637494559238593576636535472635516030835061501810674373422732532069646882207589253397560925071519329027916982379229408939069476085314837327411301696794962927510237939452859723944811827209633121543868243010425377538503894970826362227360447162474062549807308137462125692003720037585239519800476072404973971551914984706147158241610371921843493458297576034614894078318789509929424751094188953442983382251671118397402114101424401826839034979803426402576316989220139227464495075299066422203672110623165315385463549256467691987771876157044420815350922925312746251520766306749818027344647812682365496055590738395536325249791320577249279643316574879648804247353559852122781618984983794229658985183068784381437351482063899434149176628404903792657323621352714866579716523731370127365798367230652211152031155582158983142948226727324045208799845240646417176482057855920529906976325063556031594631572935534136594647457321081429446561845966691627301559070024373524640957635953767964245785297318320959093211022617140226804203256710399415024036944912471647392711502954513312619275312791826820351855212475995132184930754958631528843645927438588988441831028302710770376991894459834795959006439393568540677487098141177107935579195368130730483679091368822014737784985489915211173940619254856318943381434635307837561591817020752568785532871392342955686950640024457369085008782695808296384353953301863042594484008221100320857008140044266456016472223062824712486886966215464213183809586516935983794518312649106529831683868898348900056367737493541202326724932312946710488939158379778619467915862851913567283448311689666607101761869029486144421388193134610818882338002385947530803861865532258538016121705693138646533629930747167865037750497651160861505142196803863028548767260334362051940450230210703203576891157263403845696148877614474476262085366379141904401832811062479048580628146006916727066638465788592713010899238701541422126112865790135785411808218482541541976958090350476727825186366711630261591098952759453315020753116482063426188397936052868374438132936403778196018028575370502408401643431438159783998547406271818929507608344000143990797944651369934309322128611372785344098593175376676224605587805739569462366978906381311006557793761524194660934784268523495375700068146659529026303922926926459939905814719157085387960042247510908472748532150643501031962560806920031115650438228095497441546270055514212935005092779291778036949767974534485228645966852442678338095695529867141591331523459770653448319492284674563264256666760871158770800091567946658055213851873053380354257903645187751097853618178736916282414881655619411635774461508555695797935916109409547162454689330894611627737450720992873518197811597401610409057275759532784878289752304706865567046619744763304577578609960814891163015794231830955339549299716067511689849182196761033039259711759813524406726734263552569084760553742777702581039888695410032143242743106124700149411859762282906299272705031457187837769222876902830715375656404496510894847124658288237969904833543375873402084383520388664216151455846551892483831816771762258362970532764971500705007677254354977261217968148749531815242098616644979955037825525270469604783838915557167136490087842160176055309581668743215757851895564743661251797156242999634032539015745949769005798340611621948976836726383921209915744297656087353548877372467903868766899137721486547157141911400541884472800495827049466480322826841172114623759874552574088002514646711328724634713616589593255268678147576927631006644104704961809968786570532517826912214843058743261930326484081263705080362431108027909493417822649822471569444335144433205379524846921577285104992920060075460490879348413638711489365758446009281018266649094719885117445753162132681001663578567018103145028436855485893474519261549651781935882358183907659269001443218806557540851957490384481432372835142372937066825360268139218780134190012599387328222855244823929079263689002917056005793640140017887998797211935903557477134661946518322156236867342404978284944251128761193999333957738859234310037940644591866266868652344970964645818717069089258882069926444905609795772851556455917912902182649915826826458183725982777979470547845064377794736257939963419349595593536075614806168633717148349233358535572592182133880536489627585069827320410427616656658486611477750915342923541762930169944612785581864455089633117460601130891721945912436718409458992340411720913715891582949794489560281278505665346468682805714937456148432304689970876307942627989927759223092943933887775085882393166696782710159599323793429913765596510017261480510661536925685190447241590811215160266846312142624065893416248995131112597748029577349784369185175391091226466200669661507808622192822532883193110537267043305973913426194644885999045596223764524076485566866326718775812876093616372432788721463484146232036365854752962382512002914310766871176766878466588968779409739336640686454381338072426180248214898441054652130955881538480074509148577544020396191984635937558820687915656948547251120050898118175903571048225025950385397582087546035495907422177485874763033071110943588223780519570745146842457298098903370581206377197950953462864922719122414181018241377074609321929798031713941137899480783515826832895583177506285802177131602253586371058364925579009618668923501457395696732019948290829456651176780960505322756566151353133720793620060766863451180588135923710986096594960201897296090867100685603770739384343384920342905402976705543777068576777817183165270615024995476122248424960760049084017059621633921874725944322194395673710222806187792427419448078927943745848926666771370876798448444229896618903452918859199064816297195070766756136471946244942123781173453518065475912959525241858046833351775820111145173693321003868013341740746706240197436503214867550392743633203894352504507728951509112116038854246668278335618867240085114727705653123927088555088596819052000797464111042322080517638889547216511285337566536447443611040594559835098085359300203318414884095111335622593075720066543490745232101804049448541241537030128621552638664764553037387510169281819637355669945300030641960351902519413483920000447398315733164882140818898901025964470600664336008280858515976417674570884251362645651013444305069400674509380016071593086859947510742441644251160498631603355213665805874143497254278555796878374233600705791612998378313078852616121051829272518422828495042904596176323998073304323314587108469316891253865529812335457968292152412226340861468531250567325417576773995965991681096801529066905699218626070102312336592771428092761880401925980889820689834171590993311326088965775311720355409467788922835176202850749060911366785340475132479187742059186674848681017480974038509993803933937494090644217390412481916882838325545963382239609015658926342660845799629126458180730906063624482360782543680925802432105052609151346894036499893076516407585819460289570938652216737861174893888605855481587604760758049033696670475171952394458938929804508785195702957182287204333487976239605912471397691229565346203125801564291667269722764834396344033766555213186456475926152084782489511237479676827756503731271374266126297060805357399165212154107951900515039588381407150376817431173947843977062445395136863693575134111911787542163558306983893488084346683913786501231791550037431535457138310174791265152519445156144052815491329160081483445779891865221133243498038933817927113003459622618921934304829390552651042122164164583865767743485633387451859552302638887029493796571578316432526900940995944654716310835632059254829984313073597699832845132492214246187230152864411326015989284321730340062653112103315965389485089040739386431769973523423098017756680533193761434219472684655123041904164293481825981407358612556191681069801478862862100356309716567875284526556395709656775024335953476843863796240189664387680135987222107704159496476040698386880108124666082057806862966386177528368958487901070592943282617259869258868878371170255747433699287985273834585737304866432546870140585776999275122546318819743863243720373831958086774361402483451346278876182803362994437855393205444332428775082182198397246878033323626198309115207309390068578775517021028292655422659898915254929700049856575913641397191302167924422440106362749491257110443997353114164234803029104393849213857694579183376642186858886242415777625639963840144651500829012721342946848215220211273334327034379263358020751385771473052958297505582270155613662337057495335539520038625409708802316956865133526502001389197387277357389702527227692986958988416819518774576201671880715557391517930155158116968613100096157658774158563748442184203447320157392988387426256800351908084788275027090618085107527754450981078538636573582472424687170073875794012141848729352419727594201573098562356449843308966906845520703425233005601184751842080429189081062299623034078086301958641951844304229333782179006841737796325167306309406729025096864764325282866919481160792080731741244075157591626200932005913095184792976313864230248735480424662894288526428539963626994132933553698623272726770820551472324036664759316929168925645182806086187355057710674511920022331792315123782295703033746305383243025742464494416962188076407572287504964963735053914048786623804661069307254936339708154236762729975058637001786342946778406856790992213156095373688210677315412952373044649042237983530308422573855514352754618384101429324195020602680528211251650929944531501533995386791885996248515594094237433741817528345327376976810930246369245312510974845802653150737591991038549404096625607432516475347487773430544110065781706389210978002078777571667272642220113846246202485561580942853597632156701914139024769844473661317793734593852276698092301410133071925557653304386562289741811043876351896191046076015702290003330406086602540915268225004018784529072401841546537391831811122443059464140325146828844121719143445061559116850187493914959480033522458803109947208091638103302970437466156605133063940393810185737290769239340550353492551530262058553233842215159207798935310198904019398480093932370299173444426945353038920691779567617838021946355011052127730090200477201561379371362003664085748261393769315571500707786331450981707450610676967625936720362427595771779165762856562721330825251645944096737414039686357766242093182134331372514207273209332784459094504652853096645382990836318607265830681542625632273973725483441027885472396187681849329302306234584048235568682656082802730139841404857600272361463627613098422846094868959929420602164162660943878302831037849933140739184499421555593004826098043820139105863246390708177901956397280628525563363231301305175369251681242914325167558993912260840906297998894658713984063110398204197509329910429693398894619172039924728127380699693512522643792256056331352827562293753471535705569085846296015770321635000932019493859556757222784683020930991332425095386771662710773866081995351022792593658209022622677633672293640927304177250896091250662628003052183414639105662849567807027066501778352203103770057675417848277668613081776269679035746251010497817676847826025593975413992828774968095606972352308917431681337147690004317911490747744649981672462518431078335521664376930168690712303172037210388955101280986787918949098615625018330968655721314381243859040802917951720772924470485955548277432253136726701373137903252620098512647211982634129187972284010827767353387146991080528158249476912398508909118268085458666402692746650749154543057302375487659370564139600905064681124148299029912369592293642283544506261001171847835054385213932378203254310412428417648908520398406983122043806358304878593177525017979848157825094121861789725646197385812212585397633826299212954013399808739821484723338058521961150675124476690124714092065056297569851452417755324457252477241177147336419393134519542139808495554296881745942052877943550375683392551655314985850350489908074110803023540901027934951908796657159580311359715998276950726811754906769033845809086444849236760177747878869311235809699901429910757777629100148330966067790856266654607826676358678237268718008609758425564995951701063554526836759681411000541574985872235059410688157787232462147446233731620157606112042808319956490128935227301091076516863995758620391696598399502983960276502709261892473125173599631061174905839137225986621234489173858198690708077880459132785347138626470725327436462719282976906230712613905160442151927278526922613233625704826330566657741101198943376400938268284288199885739198329813717380021325858605418777030457721137086902275325895565510796200635520327030615135661223865344811015430697231625035545647345051840161447362794739918422907468585882341174669388055510033984187284879551590468041352781562437851948587186083700851994342657384577854596185636457653911863022033311637820127206268557393707543904889411973564854282066484108095683371171151651107483029904018403575616305428176529171965018995513684257999996734054030393093599567589774425463539790719591150761514361382164559429334121848722735384050794674173323083589294140280689667894421261742170406839846322262576237322974786134107865266659796724215270798030467112135343590876117799500759358017987288711067821480282485082192785463419710892653712702467970884819619810148545047146608297235817934207853157851047381651380483664597184861757673355386954815859484686483543547581094345882649177603693078698305180245501086848102528410842369188567571464911544551167976663993678772300504901026721041402703556567742494099388315562812312908714740360636943293189376478206108547427464246340200385228480490927722323980813521228185387847626930204372231171163509797718040397438504388634839446214533727832908247694112163325722159119754688419542645298318161874961063533137546093745532749285737059338088228157051255549602009676759239793373906632828225804408405532398214390613526336964419283143490073239948984016523284458168733843227164691776062177181886273251760399408115899487301807900616977609071330639069926744916226514535661846080554896801284191235536811980362571910299559249904130190184893316854936800518680685136601221951897392640466635523476929391963208660195097157355848640553049582982510953387374726639508360417936429095068776937684496427143246373928559874018043878741515240083330593377446934553661764713026231536178054197047580606540960318932261277034033561732103411903863543594892818362937154899650231261111536151817814671273916525167656405002224539542745478673904218397659158895620311027013564356719681793311563197041775625112996446243909911113787340354306254587880975653162465599039582836779672374764440726530819339917239335942538875729260955003708851571215667296246041641600658039679597088802919703648300017164478890935769164798906263327676089408629308618138038677529916962477124684056376677979939810093807196251165415933938324870366811966596362641645186073130657136251044102936364285243464429861614122621197911794644745577789056479763096018411993933225908117338812696756308466962145784154028053268363689228499801062649113851238444521116004155463893955840011517545106078523544333209477741294067628885564314189330069793913303764192325103191571401286297114097084313472838276842412054467246783072351935708784840179124904338934902212326117447260448466763202450021217740904136685410132061871090339787546143947085404901558730571776690026319008856622470393674134346902972152206260586963293657555102196370619741684556515774473970261991639808558342603816943734814631739359982653832928281485821494523279770230418334162432774419338875697122761096931520900542349349080176545171121805408066499439562142303637536570024470791230055272670968641691278130723061779459647590172689573098233041841960403820788968119134138765242751393205026720563683521791412043275665942459034332565991779338648551164762100338928456195901606327513555175617094893326614791159395517872098362615993402057966405043720854953992902415051613814913198587673107541558364545010863213174098285241282837530554325177798059637097349879553444152954411883040310621820940818845511700739333082725181182879345688553259796736401749412677496628388526951113453487616568019135599225413497334401891115472507513341355285077420045532170064078997525428826082939438029417386482833213620723346281187905844392462023498775976275664813090889984850517877186548416514189881880308255468468008605083090614380234920632947523546328930306027576482197697338549219484834884899649214262458735537925466670410809613804714787774742922911124893670745881847903865617824985261153476090829070145295489048597691955523792673841290800554264021970088736143894082223489733117003773205307239262012987359713244525788134831111341403645154597983833473913592629558833204960651885592904861359551877845869187108596117692990330373387117622979469273605857065603639493295505484156650261408833317261485214104353429299904688673120272448181963141657772291988770520189603235004446905108871960563869882728930072240211153815164104299667039736934892703512662688519993791768418415198094201991251247696815132848844351661939005160014454822258897626592799503149917793568380362532290186689579675928759723287526414961317392200222725413480852926055630804593469970316720106973259696300647092117965940113011835435618186656540608154689825962326360180917258048817189776235068455952922438640329762551795299103246843010128547061400457790423522809124821994418959210793644028286279139360394002515541577190915727857215724687855569465519405945748586167262618645509160962234304238146570997705414975242662424416634195148897309535507885156159884870331850306965393005064326193053240743757006134374534780729642999237019522765528150586829179449064434900618999164624180282076588925597009065157474037949129412491435420413839546476308651223237132897746505423704074763665536692838919334257727275499128387384724759376685608229879272313637406473245319443440452222728899694649044756688687193305362586002298941462633114144920624482499053738946790263735392808569606797872237688117602861504797524232753626623398637787898120628569972701658968381769079395380315396191766323806503969265332465873483564950093195566142948470016746802838109634675819758749666381178524891141959954300824530833469400037857891713685918695003560352018576575503492063196606504731943030983949232691193340201602639245128106927554486742775277870982400252238766436335582264385184221765965152995628092072310144709182215067838517576017120088335006601029371281823969683137979773942597892318765865666019602836245107068798549446539548051429620226120044097893782903909687442529834135289539220654741756063746881724878065200204965498219207572090601605629937203237791878716358472140647007739002623331276800404660696238429378599040359953033371715174650616665487565592849793695742315798346751580600060434778906844774232455575928092571075224156752378326919078234042987769381307872584196410073206248573928354228253289203929567546498441553410748492268233486654507347935901852550984413104109057325589838233467084309324591252754169244675859538510172407011050031064007317911774042079768064999149595335176909881093965416602420749409364877152355240721805636656235277591729181001031115953802849537695689737771521643045138823797780005168151785532077976413092844321271614443481545121692243396789569971987646972248901004667253974476105247473600754857284135478497338173046594566524926397640628842719198393467336853127464581621348910394212280825324573673277046959314549139072783412520808284158688071759390879967155331737444437927930514780654576615428412161899207885843170566330937869969356023606092495052745509148691649793273592059077559552070034983480499324288517818115457353796538623110007353019304111639151010667497606684955646748860945594144087833004559011488669617006528805267155703811304498597343588835684341758470866391087150166199018871805072560645616553138740874569192562993797954056915956959548117725429263329780465327906382169036505852793970795975985484797082673285830935382314231219911864056991941772719761142105447384744600862766489694962352217637014184687975845664238032386481394186186767715254775244430756485273876713756688892975973536114875824916796424329913122509186280020436392998689690845359947840466556297261974439627244377839687658019990273276418097698799085222777467203715333784104344784897237380568305284455468176469123339619425871505615722681306650688107265784861758905890964003167072309026100590847677531610673411912671838137004360268617234060428635454414576958597889309205767646269130319049022205116858615033991704957112854815596090057677620218702125652711952308873795605879167558164008590543224472760178814668219212692559120878920723764799394356162291413350899163368377857054955589209092962660147773066988166787757247110195363086522546181550051475473520561582486914794575023425348561421134771842943012334031475203975164406717892815064000666531824827363810161121147540253073784044212379510034490249264459382601493073704052964533592745134369141013114626646176046370937923551996048676100392184679984942300050231540431317349528718467751889018936199086384636474696210686511155834425103171410149257590234513457630437357465536286907073821535495591574597614361866345982365585531323409106615595504780146274817939300082687376370165993955695134291234508039778552498548571170650090288899437090615005505429997956004467823184109027492098250013920500434510148277717933319212431680784049214827803221586462486051228861997125895618079871615202727820207087629412178708025342056663582418280623483948106239888004403529360626364765937069360210182803567612979780446418627127811388740247276560313863119803021402913417195401771545113909123194775233924998662364288297948733265090034719663567170851053995375598736259650226938389917529051899532777679908315755277361803189218696425088125069217814409048589549785827012933513222562157635971327158621813197590404714791745278958720032308466207141705852777347710523691583062681923249408006877335990788366691898829516776325371105849745291197198379140377380551374126781565224411216274844816813364215281829945589088848965707344481893827849383586862898143398469121133449295631667734965809075929984074094115704067250774191061746365419780443934675932486115489250752334583074892836573810356158855693791518597168786122164845235918527969962572567562494196777503239041924887263532181544457677825460642259822390029171156558299263976578380968405432211750036358345939871117498895155584027053521673755944035083142459932483030634274589130513432414733264959469270050002651271497989952463656920096208955830091717208900234214219641024963780813305307756628674024019295952562098126553889094377477911117385068886608238260894691526888868580031561598302170457099304272259979876299749457041939861902039311929545021910748863485538049586080985517539736746064670577252247539535164891360662299348530068598901300339718327523451576603916163216384867741388178106058836694638645749940705607101420866059697637528978703540847668054430330396367751876278445335160236592311359937508763956827060669260146436064094741064372791228199760146444643311169871058167078956235568703486143453723486195016883678085919455446392667702275649667857598872707300998532479289768611838215821485217147057576857039142642154051889459690790569563922949358832860716392716881670836274038522868352793587542761742342889814217774542260637284313000614056265616258427422391492338874490641568680503026431413649099654210960699383066207745365902551694520618286724079223058349652882893993813384548172842794310272455320814248982548847395619182658477072297035785377607988075997519527563818712983063468487336851740309054616812277173913324517284195525783225656226213815417302235354902398104074751325501488406411670660586391024916528082766512004862587092789885829350941897135902070300538629112210116688509829112285820925574945004498714235044918495550778312319930466927752266230134910617837794268008482213292480090642256357170921217282676853969194803087009231325617936224387128153012541839806931234367440628984237310807332963281800707762350210630316449320352054595605387395102566067062579030206570624747196549349810221527611022841874579542114667957485815296554520533702145245941457928211815727498942458317869297514716329736758675207346800045201198000917256920623918736002056305383945790533508204232068155979114628839870249779063926392993369673215164883514115986295669817988375075508667331045485066265724801585951248520164306352502390242298366089029124819037860727371749783284289433472636236451961688201365582129450993599442276127165285821773876983024714445004713695497780752105426558667319821283340643661161211717353438090253032348278667126485647909342389822910825926958777141511871059873179996000292886535850238186758806093224682453833243845512228425185955922918108174966086849778204856202457632104445110345597902582686170468809417441684560542809228215897892672894274500921781307053180639305101160855544975810252363968185362572863929485851290276679199624374670612906351396270984653759902809340940528722710548605678242717518259517756102078977216277735120623911419552456588529674621936775310958486496970739656942551497904927887177893476204522841465784263465465858755663890216666931012325515327959827888867828835993236512396065253926129079171047032646496986678852802545752138114720416283446476520185195253445469664656262055988054917193890506979581919546092875929110365712479253829635110749733265068980929066100615656119316540134302190899513614078304756458757016081826894369929616512125423872882492759622273684471121049705654495973361362893371325510784264145278693435818290181318982757753447895147903530700641799753478701563188528204477004392660174090053154561843563210253255296827670133082630649211893634732600128096476525551129058603652136504205051328797654537931179725934087112466461842116852849411106501685940373088920593880903182577818047235212991232414343182948891522058245939228433582622533118652317715697546602551493242754880834930961607136366655168504417354641103617954086301957782546020434260486550097479970859466744866319999842145085985344857992952859133775784420727596892007093563533707496858981948211406924156719979164860195631086103849485081958851813425344085143433474429872896792814373869042180946771585744819980332272541172482440613540161310644872470403666154506928380938191683745360451429670417364125335504331877236129721098649272299443903523477143712339208692912459867546384294188385902422680936126111503073582677980764946409230895745268171086278610520248710284218055575410331938256038352558546462200988617563977768381281458480818790108346194302001753510551378296387247536428757276024112363384706460050548249534293441301736609002800059554167509150881674115921809901476679094175798613319246371903116711621202198162139539412219819008657284678095608831555064597401463044049241995918191700208135965572007785035746889296731016113274022022205559509481210801522584025982877141558110652283377534995589646099075784373940482762807693720768689293527123050202404059840932057404617133290997169385404338336926151958224545387715937267622354337287131140465052113429900521615820732351323264166806071536649117379727191902264705229733931650822183944355950153761196731138879940913548430831728503074523449674297772123586539136174530617254561831476844903113847802434361121449709490723034309763428082954282903772629640757292179178729016346604882728300158939328443541468942033168609297712011074847292573967053978738034556714307223675797173216171561684795163262364260766887400848906110568960010009950594762721888915897103006223272816190561500421608714674694317658308234841109722123378319805840914181391202213565866473234141639304881593717492026358822646919468367505807043757678538150460062942961391120081100817485967321247949473046004753347840274242210359046879050346153675456047651711797299184853013748309471607951358740812317698965998553076060326086882996558918973020543554403660988627121869655466676004279781109235326159126492184423414346742349508056682622022087276953715719178829817906994767256748935951364027175869205839324413834119469322855244958878671008038144712906126004772404148407333952351239504151862178255073253916742952049738969680990257842072542192183425503932100306084235764817751823448854959293111244012568791422592607410715030335392726852997500550466161130921773043766572314284320043781053251492274488505685245063398647029720126586574064604134417148077183560277259958355110552956252829596546192393704526939939369742151930554473681576952080787918257951978611969285098955639747088888509457375909061408446334851452338472762158319473864516289435130797360279947623645720147687002625998091405086029927335436920893470846768767824829261418368761086251215232051406233677287313769322922249897469628624960282736770800134780694984120149044210867009366000121432780256973822618769207922757427265501555877520839037696850905715450708184713285889435236762234592122115241485826639004804554687688644722442265797097798080942500107173714319156625174334866706111399202933601275939991564773317758162984831295454571190762535493624639311541763638973328822926260932518808944095706266217356961267769248322963940142251259186469135125375874670687962316299141604728573617807121696855613793222862831230821777850887308856333531457820916000461696243496573103930600381636937808008916874614885736315946924224099980116867947916913095105269380715780503739784475440248795132529061318782578829078934740248669418314892219372214984830540387964979262504606921465517286677349242760272103141861478171541233043344103374911947702637835864897802496646016989941067680715359849845095491617237506887777981488668139186296790923040159826697022517324660663875015010544531166826284319194682525751490879364355133895050776385604898940273535182306038771285019380151951682134384390266645876879111833355015007091725347969241993743870689242722244903530022262394943371153204264579066958678914546378701197424453676530208424692222075366936154739427478078162664016636185415466516895049814003377216516664588772493046072560062388888093832588093167295293411713664606293588074820796531790686159429829486490462342470827531860696753879037582922084464314599814955925096964986260987588079509511819214747147837726323424229796683941364112084782447476486592250707936729947053114976780708452705333268662652807613398222105713390567375715158502161660599099229886710474117367550090819885170235281318351920807493341348518978139880701331207418149374324501190787099585494214676490754628499594579772605938365084576708487899868005973802565799666051656279351276419086159763884018246289279430623653846303326602418260164166024933216805018693685791048187488959146874569013689560301431810955064106273280335136307195221112800793105839009956458441584773176002916522049836883037490833826223169122866815980772905375266312341087094629114235741744420812353620272807120043541880723438792855885124967460409670371041440575479977105063658024612477606237069590242986662448628385971658060030984795389064123043433388540937629278026908900389042934548231025825990865732800202005379701248825413501933398749136366264142430985201836889414484345680213764574870075058317921043359574418003362759751646135671713928088302062259462029726847896975047725359727761486019204435404189580860896747235160904864877699212038192468673090650906722677379824416269282237191013882719026961453603272846707232369329290502077901839585815329323342539518923089559911677015660139608107551963433949203704992920058686584890122475316745776528978685204826939858397056712017756647263126434185794023454322076917573790121329550508308401501333556398593092008412090123884460118273961872912293322168793496276607873670720586663818610046564554844501771412006269813731009258799164695212429006984563241812811516237429359319365284065004315549817249446075207944722866968364204483428623028434170039417269083249006235456286299434878538274324489870945245184684149813303815826110011290124557519268728849181821937375100777339284920553537923747482361703915813532843055278586956570736448553075718235034160303884942569210726194609529948097742222128557774728065123872701595290756964702308585392605133410982555314492404851007366741176854389174364334523296830700734387198676619008945438764304792168332128145905238996284517799342888984207456448248975778776047856632773235159416051915983539611410316549652055601905662126467716477307219944190192463091867764697879208539501053436902733420477951523771578207560263514110622218202163551819544512802982960964330686578995095921847573401489690192944697937922014346046587746662273539097581793951113763276360195306498724543209918604406598734320352288244558808643231655463572783951331137427076686408352124973207131683876481268972696202764741854834939308615633240591625421255135324651430270527384772134306055756533146832581916200879195001216075553428294442599089354340259544735866991003733110222892040229546855612351832526175143199112138265995801972338029128899980467557954264487131566692840015233412073441807851211875862616229211537815350919486982293557677718965685476677509614770355515215462863628810684815431506192666934234033542581192173943436195325130010691978118074785778786996138401589861213269986943172327358893708102499609439690784211697247990863647350503657373375135677740338132506519853148800806103363678170509511157502771764094886304319287977062621447409434167675033351769875549345434855113629897180291501968114279984091711965073252263680693163956805589390041831418343026253562592319723181536167363793520402015135088308202583103768191475728883591631675595613658188210729071714576496793646888017889294118273700739909642141524210413297450436609764303475781177250338367449565140526952379549055769849815203873162032532298659648353819186985709007397263507352836329248563009780659522429303609143215423290443848898765694958636969043723355956027489430188836155585766125625530419310132245320421576590752111161819687413437559061149053265911921215600909614038905672710029541559579515223612350467169624630847063325564428541728159815002905551367530230211903970213813749148987314278858391166359657847599489277146944476882452773855587420023598408921163442833458089853930097914163135114945761477336098292229908754488866404046249828777331801498518537739921367388910013463317072348297168381248680155533233049219173367043429920748425581922734751997467888301834073869621514315083366284038123903121865491312264350865595045119993443217552907226128886204803721938212805144592824317548120574599009967414939240119330160268329845349418111249590510033713841697664132862125501996758130470638116871008025387598154780859951577119873634660627706637490110320688241166460957233309410281080952504273306957423977891547008873421302377575817691198745913267753896809181092026311355456269971408560831381425777834099804609679103233783279263985892504714083439766462568218598696208153743649673226749236473816527848080249596486981058399177738097753136875501003921578202031113562321950168811947677574523542246985806279573499855124724824877583087224249680082164417171152328331274284884653083094457101288776585446521890925805095451301738185170055030042148234146201965094102077537974084658965943095119050283292882606905312810523361214477631910634828100908952907596175210222230521334122770129877699048477383896101494092827649532753752311197481930052599707579608414577292382203106595072292513732591725111592272526169289380215816740777534293178729502369713458906077691567585153005811098441131448250423034117867856116088852187784064882848267739318641847674212968827427412215939556595090202140155359463862842761596118433396932096266192580923293581006777411586116189283923667013448464581940413327546686276994914530000645395170919044370448724159776157982510945482535622518258012988136680959277261483662714847922745659037821788327944034988779021376301321375235101788832056968316767139663063022254167418944084007792741702528835471240236627985322652980888280603919370355858182656430355405701230129758968181174370077450530658751480659623644462486726117377106606111608869586871981254224603657479535917627373288623082567744944695084699513978804475678242979358629407231172889492362082663346657332232943177273885778810344504198591115599484085081008747191747472804645493843691758505439527545899523284823548627984138223957376577973746809194011501037825039743419144660205023294675964636465295344461570196156819694361134987036760712648496129860673910147021742248485932059906881826972432975750039095772674264832857636157113575169439407860812514001756059950577960035935128412147979982350502595664631756778324710527182655532384096526842477565569006255752802223012093901319174637784588941502650168395593853874027056019601564873219915411540304373713287969268615182275853387676994254914917870761644623950237375352835525312374579006242386811496373171206308559560652708989002894225442822195772421027669718215244647066918079026551018803025515726755604229484727947081960740245017576217586847990233536158832753989998772725649797978557266791073496078827755430457664861747698152714186910863285022941298351174633740958428042240208903206553268820736072960289581822360897980520751584202833636561798110675046782952800517409463926141904210681071972833118677383981435023736568417579322085523677467241964431699358524197691597426612112103209902194476467170252519700362130130899286913672364456095473782484449308454120988852135432874568914747877876426924409355264698498212509875740254646564830835658643019793727305991947829875150548674794178262991815659292550365458189548228445727962783989190844372561227210192661945722026155252674061640978792395416898547591155650445358127599295263998836842608693106129286013343619768241595964722028040212414244039494529138536972229544551010685421671398897802086417282578201486607366760840549143534586748611166163650022799634055272719478387013914147352537908851392355188271480799690939724472256532242581820498070398559823775905815200329494866902222268708521579393636627403272580214501443393567822759749054466223932784909652944585053730663001850532763512630259251196674225862108654893501594215919980334023540354477308543505042261784530372653174048713530825543502022233340594009011420152945459853886124823460357233272303272577620386439343267218566879279624207079578740697978356494526800688494397932420318218747521214621693566808811453890179682698620511925493108890882922885651695195890047321399007889262122635683626585465839645375586121899510782767534067770461338326038368670447720710826012968099700276112189825200788320509727970604464798991473751524751160913641038728020072625687957252912733392496487738445621360962652047108176643373674002443568416200689812172774956074054810400926115526586287323891475141805389923149547444736173622581166186726574344945440642478044969192583037245901577253854194456486735809696786509097007194353975255773483684308955336962129723431652698862590679927748776374375261566040661891836139290153374576833267290345619957799812449610890995328305028794617343323021481431835172248993408478628755041404836508488990622903640339584809042804792110280585433738884284406448890363643378429984340866239697470826658672626439785639130421899979048838210743568658255974474522592096817374799710035009419641025270984515165264255976334381001510507486247107060441377035083515402120810634582910235703005721794174220701685959808756628724387243200189727738120234708523375526884083644013534608485941575759514650158044485842415869761685647533248653970429105997663286194595683212347520126679567668399749002848355912286003713747956919663641582213504351688364062563045361828958534969798948255588970835025569377356264532330090404972392737427140495580038273689009466879761615921993670171122226747303318421991357359770009819704583430669357768246227314926990779804619329699479777539849627681743189391810526022127769442668362024792188573954148247174290155092567155710154011825794680164000922327322433415758089548958345454265664069868228110388993528417576278313812035862348276166399435301764439672867076814787850978117975016055210396689161362294146223838017039044360050820426323839780509793850726274187018069425958833588762451957024675565421710960073617541391577094562260068819288626805267147421583605647034319097525654223532487119847578584161885074280839183988016188215771076319349589428935090977061996995491247330702525536569467184149742380521676215974432196742224111434077804591927507102424059859834580499684542473585804751820541339937464838775900286671284147024776222251214650788486930271771786716334381680306933034937945523311871713115347694002151144238438037818288154922902196844464759849064874667754809472242404844996133060020763613186774227930084555217460806397062185832541679769370285414290979886448958834632764134163372156565402210586243539505748044581860580952873418542321250355684000533063849862977730434515717142710422445362968806012191485802663327399991558896773841458145075325673378512784162791277535445066570704197859084815055495525875039262689914018309496745640817028497161092965164211438173675923849408492966512286127141839991983124219486791573882055122460212731158017251164384789214471564455862817467015143674864234541888271991679952872849624885702605900686046836903166904750856191744173474717790024753139109831867803193076598334929536813336048142083930558445813330183579433898380250846592607959428209706090573617633662867052439048031193147282161539374328100394885453439523136180803633723657188312704078724853842671461154491111224667073712452620023474940281898277827893753435240162404609395692946625644650327694947723429708562952753684686352217051238513217371724578529285463594746823575614678386850757134320838739188043654615155059641546156588638783828467681870621959710942337545858701872990974372275303067531383543912075126755766365847417409804302995404690806496990006355968503585612389444236996634444781305621602860838262651279388063874066667997959080648090772896443694564003521561177004462085914627373387492675063232103203351915827931417173243843679924576796662571909623854513708456691886835783963878904894290554024031147354841645596438248073791238708895214862227981916019119765227736600846643413796294770046795081786018854608582336471287077595181742233680220619344496304201443571172650112412118392855154828023145246962995241713739158866829807407106269341019299020935791123822716735241165219433217188647696926686849490495515373460907830410000049020329356624961487002054688596182298330396025723904583261628399695429396269298790499195419353813623988599461063096653701008025677325640800699134083425807722213505311374116400775693091321435162920405547787124662066160932554061968449319657875892809610319183034962833245886164244072387138711220746981381447570512641295103229496265440406464409182463986445933114380470469708012347443210038034162026705604453874488970751275451505028986799726683653206205419755494731678368238416394136427356212122724206324273286226173193055111122816561685906345363074200562554753410452400486380562175035869431167975601910594827948223238311478885435145628533053130031947788093618162001706733267165400272329520989585410766435385522202499947601924801342264896753590007987693033260241204631045690375031867345200342052139298359816604473972066894047385183137034090242492916338413827394950508836259090045838954772093538201987485425586879743689875894141434440256371128223105397974266970583304370712094539973549420988177136275505665153423143940484448360617622588725544052385383950509787650713461272958523692596853083006613214003767063911250045244429755173587445720947809069303595332173427770143286180203285431551251313077475927357610752731298362616056281159901080442255768637184485978990475823920955906931782409664150226634763157052062524105141411670950343500240726916937049462373819132064755192601081582858880863046733808834371242247762326216580481396923844424781222878565528670408354120565388277104530417059373268312138405543461432059450753226803867925439430382141550030319000731795256005824290129855119793586315761483735795859620612811308796384229665864349906369494127638080458992044017750312575331724092465372506153510947801038248236601555721431116212589232414191788530566129175481394827759285356371090797357073680160955447369611432176134385336540646913508740639746394890130458486231210746562455669159850316929671872665810513699261087478923563411968826027237603728766999132990258034407118640351379571546836927547063038581255027868263364731420379149603530626635245449835841932822672941542210159825647884858216274490640640491919833936003493352387693895953406945675143828004511821003639541330619223051077404162661728555093412056281816240539356921783036743630419075070189324567338019712418161484369050989649759067327996051807034085294952108333171108403705802431184599530683290070216984192053077944761633590169396268667958069930650141137627713906241265791447853671967392612052366889600589631170364793968977592438689327551999499570315921431344232497325431430345137706771454842639187919486663828926127761521724720474944797105021749128591995844454892609222186434747253534440090245434996440574678531880797152738764290821461108407843568447654825326970642155083357166092872778049801297492332923391652989074973200772233742298137350570576240792452551808075860224184941548505205855271181811922224419541001344646317641660575858221095412554690313322325268699002584617749274533344206195265208951809879467198335943521010965249421692453244988881538572309506773252990787154855856957067563525334083807033536465794493801191721565582087255442873215845694079715227907030673295377715290502448300246069075539350609087034904103071648879274366790511573741016287495267987451892996342431556259059502549979141797761832082155477944070989340402250895852619652224319549730978672067397049038700314931890168726672844069450565524509290417846197975622678604564294856388276573532467971056633786869197911265527854213116551488468205757856213130482146347395632058023789683975294770271603057935941143363862911610109683713518155595494938916192674899674768973813834988006913794781908526650809889329586747574855412195790177701525924987178354467480162519058824933353546045168919069993893463116691980276519531740911634222742439848329452536122728042309966799699485022664694263467770603587230806500967856651006896715906970805953638717602090687921498420269235010577257252269437940593927164038081256591746676664106573144778561795192927351397332514369052917620546477314672721752162513675180684811428144347002402516911826157688418391988400721450839696369715577503633443177437822455528888940690777302277882759347606307456378971569828176515057050190517127800449731255990643884404969850488305435977690196681976640114753365048610722750197857174213787478161576335510320769633483332120080955086636412922249806650740184355390819027497777184124129721205500364581284359102454031388079560092800536765021236906876911510827317234056292156898479925119344243608484832064864095817386605265516036446861218585738311349950568907181227503215245927207375079312803700433867864173707624944843079397554747207096477032811116677080644200602586257000436071304820438930434898421987564024442588616247634457853316523130144686760628157760794258313218427771438726174439409614080534064612916101193818979454896073004312927361223054917917186956247266835218297291166304930663321054707279451305031395014517530653887111756098129506101910772035310819767060099381818260283525357913496694176923676691188218394807575658412605032266047217082827109389482210918339392425571281409898059298863169778400441332914103620974626644595861472637745267725769270921645752696394601067001693857715732078663139001101563555251647573077718538825431668159621282018447591001682097399466537787908564567887548391254171757173761641631689312283839452249178108326581391046706966164419504543830841854175986750068656503081521270019522577188652753016457352035900220610257389841193499344834811625239224725152884560618464998449334468028544996987953567731064304788848836645423181334668422671690846940749923284212992126504520680042120747807907313924902806925823750532904900929784915478237223672678306426960388262849618941433863399390031705041199743133734933577614068928906904540529351323170859493619968878216606961100939686990081310953134299237247062701678943837708417461075196453806390254962677380617583529542014037953325117395747299003865535428889663058983935565396895846761683880791085575688175835155257558686114449132022175343326215077702151284780459654061937673947471221546981543787559295183868297313632031813133848916859597881298428790799003231977839410538789085290782548418479644529272611398268480418846882139626609062644452932678284571791945719443186570042499762859422632946787629462927958161168949438287239958617508334893384987184359183232327893152781449924385917912411434728871525265159705885524455867590675317373852181949733709443248429984231706789479282295732507761707055398875613448409922242803445742762236808245918277925252189912169470924339399831447661273044671718060698044841719381354601988941254874790667739843544105646849715279635324856789311844867782245179460487469543269448027351074071432001519994836302719370359322534923809327771708262639018634738143883570464246823802857792025477319166298712281172534885190115871070414906222411596915155006778300242745399290689731925172869718600759425379567127790424843630654327013747897695980056819602887841619095918868793733092361045747633200419637326752005552444901344816442067310758011441113277211737667922859212613354442484538716986538151504708864369162593557537972222818632361524878346167526070019066035167538820119670986989797848464128793304262463414504319397762923000420617354374966785143353697783620961488453882279556099668138379490420846006034476076170594576156871326113966236797391076440730160991988210853847326336225720042778799913247026244357757019188459780849999136091737076226539229701088695740364593671763593801569810628525082299203467169626421916829834257950286636421271495981422688920277488610733093755760176652994930757110816202026883506678497454971771800592961118981931405406383898910795757197126854767365957136592017722580678769585687543708053194994578838005802102097266753702627014417721641502725719770470584629753213492483374550142909211452622419829241425134560684588973140244789545104505540284340543991440366086614722833668329140582706589061677061955465385887813226189955971258781914015195349732836785429120836119972895223477541482606367857470221778726160586921307798599048224118077377780140438889680000954895011091728607920531658806362228665800870361640831401432040983762831428747902357428696331099357530257166805871581719594236826585218764532222314876443244346758444717583108216311993323412623171345864755889724798002105182921410219425028786194705031750150213589876916350966605509924738767358172890908282163481395987433152270992945470620722975141307268534919774469617595427686515730138433267393898390803813203575238950167635426184040653180104248641905389748079202160308326564176659361862182292200410296932273629068084679112636070180218948156061721111707060599730914922986771478590977345340545254355054912931809130765643056936976058495223632056454281400085349163729231513129207207730404506539093720426772904062844201576288220964548997029262252371415021926823001556353316382996443755113346177335875955820181110458198152630135088840078337590582067649890150650151570109105356245208732833930097240422185837813216065958792599070781869488462800987195716662804892619594646955369532741134194486264108892336388218702336206362008245156365434567056075823765694107941508874578772505787774218022091377235339901498456170295881172523420972486047629597384691222553315679434482795008342652266086176227058771209191420861669605453143192593665193307993493021596596657406353741967889974010414733631893095025012926683265030939887076967984644629045106791547942291610136489596840691619862690786025707890867283244626088306541856688680295827932421419572200678664471237223753037846231238451891214793013608302156028334405785836666113841118107127115537868153318165708077549254887629541804600702751254567811833461320115047399568797073447069976220182027729243368080197569023009947941601283683925027070485814148567708642495435517577244157375901784098550858498899383796713227244806998746206463937772742008165905527400998533222790042305428352822374642722071537195056588473345174381265861064292337622350410848713125821206113943709190652089099580298955224449295783262188433881099392516286392333158643464348186296992516852732591021387559522898637969589674234264636953236665622482072997016889251790106445271717076686533467510239210569096291874945431517573036831890637075230037104369850994552461294648905220637497926217711408175496299809657511068619358028958799220176528088331882958187187741738718988034135392482128318056019734261379988284320231892734912458165542203121846016554432053081677294999668653005487508965444764138795399212101013915053777366685837717002079501364447489405652485376642226780243319005890861400739045338592565059583866638943477503681504205763849393495839821089414089774625388603595266797138262374267234412473270371245168489817197725356798602135652048706323699334754956543816619508406172148167869888411066261402626843402339323575268789210521609035554050463144766775992947718699493008389895705465731916708500607510162108349361105115307715601146230577025531911658714815719765967123036039872983070170915867249884971070794461372775264675075923221663753150071993822612010236001617624889239031441653467405677392797972267597159001944438278279234185940146896874346663790913012713824132239691712788445967857463588067138930719294784016693537135586908606236744950889418930471504370759609841867543601389511976112675482492275842700292959647502943852401721427114252411828086522703340697062009394348656828627329571638705958492221636507493809863524075865771213675147702342494735756045733663969244826831535047347310934658572287697355989465204233257989507047103599096958401997125022666288267323728444250403008059168188197422844799098190757670692680545724840309143113105962750267353142002544794143797377586510524550197218389843572967214673201009671828137492062816018845355012161052864267481194112096295554782583833753724552888263127000461182959726434670133108728760215789957104575842643362816701794339684456860280425088223333292581696559063480420719962983332268224659074079583069379032381433069392207357819627422235202555899104180543158245557875507150197140416184423663013044521962669728570238704804201016488762307009982524205761173468728447634099868995258830432861600717280585329453294467146675140692326214168458168058746187754741674215934820600401364863607908161516142781107653519187262184822874853558802322358201098656398519332089029651741151296238455418761393683008825807895897244413099562179711013100669510058503900730805777498540467207616914077685197913901431449759742211003222249328481055697123126035507677426510833655809904196294951263249689319477458825543644352393937189838277002399676985948563776313025344640576921394250131917561576310862286202220356079981415287857938070575912529276142477836954120046539581652076644795206831949879442710651129056475137409785775389622832221100374829581293250610691938410571279652192524829208060205665107429788002597511103711001693914956424897202338004642549415737214546527567695509943673392369499583991045297329299518543667735951510777232228628664498500541473056177198186748420373169532883776711313741224310101594115306368463879045182263505656461441240617847169052335824113811532187223550501607174089523368550936549817031059992530618443713336436078258364532255861572859110333018028509879255498218644865252692603513796864804138997419138721366106838894276534931031522602506489526023687795486510840081363764780059132795815414995778902331184832613801481838315663714105063703692790583782942661806827440022467007774546898480498962259389374459363221097553567755333633104831891171352657174630914387989936248454403747281829456417128417043206083298043968015428995812064077927010697768001551910852590841159998493782784959890119460123057199989017971167538218672838586190418518445084703364664523543095639029751278477132647614807884994351540079356288576560012158517950760847635396394141291967492705354282132337959394674111032714981595968627608323901620939904923392826963866620639730362558586038259141245467139200724287523547573705815367592034122022748074323176759140627124613822188020047168792012322997892662984195372573761978530843481466068561829809301068965586740443360068177753984416282788986841632225258486839244864622891554679389278913124323418951884277753831939190137980307522307014166896656912897417747543326371983432934154872152868162740320987214216474854017004199707782908320950283454453422229613602979626411603031310192316270424279062015864126640409807501544629478608687555108509096777475823580781686368664150113638733397770924654934271966498458164760875635918186518889945765555221218929105991211112373042413475523480744371514275140185552888519210113641286388424316625507965536987627480250050465888424522255024336381682004432110624774136487006589479028285186720081715025532095375297352126744703647835779976275118835418577263931261207538797156669910557595164991627233564099093674387633401901061569298513050168341635289008515998148688337504182759926504392780505394750462445901055221971526614667705715557493513005336796630011026916869135688068394190959885583217416146671038819378134872669990263805820916565339088323083440165417471953885861673516172984110186977732936870153529019798205758051783761909799815444310172620987183286418681877255794942215026409858154969813145385908563778993765652790388969672766164841054839234618283349629739182959454062209302437514935554242719673159542364890007301612974658577400046944904607332323077951047122793861028266929062512332397299801046320034877727023626755802719969039953640200737167139202087458106591912213184721282663292246994510735038827230452387290147497398192456143299937639411914763812746757002114984015420196949230237829851234801759173393361663188099869152362556915065239103489545219339836981282984473389998207862207440037551908743043907719620024274297149098483722182164907908466985500356477760072380619246087808139698300263357051069621599619453567031345137066131421423798253309831839881498203070888755599221050575583916793807091657143993849383673389501451614930226995241788448794419337703842583874847500925329095273914281317089615646699337580799102745372582168956764030737264468230883887383544445683330207169979398940139442612807261031126534931910641793759054023993125888915128918706465985914560200636625820878829448633961428354339898696350442984963583917809699609668133631078745775139217437290636624529518207269649371617385645793664019117728546439915143148614132286912155209258614383270583763302679045874010100996746079984388582087287984885965905273355624336422174117743032875966188528890286691417161376748097682423867930224972979761665083414214731092020530608977059047864236604060964770335849534516713279080382047358817117933181112304798467847576564316650392489478404887261992792026865139619507900225762430287716421097353020569710965024003642004413606899715636829272046680659199986287401924623822928856195603630744348806236143233860462618735101871577895158642539916672105032503851434312523703165710147817214295420809923773360377214552071686385952704319440277632026293839747271109561478292532254966945086625103414611076016452114028028060165656888245111405734141497778813699464764907247577414071123976380978817663409499750042302634396883534054348096633450091204642736395410339963311361086249627125896235442564436502129128456214697185240416075328767147417540307949480569426791603161093728651371678460715781817643249019874374935428809636617110302050522315201828626627695798970502012740162822583617874567927925424689928430112606639447254642781952316504595488809277954481727736740474819788476233393808314301933764280322099546045295830455136931117566652739001911084580703530336952698009029752809417860177411135086128119019499031601295690070310796797093780474139703521986995124070828110164925254874636438904988786937434315439448386138805616344468342453172405053369603251848531713516781404674819124254215128473573770761863802570438288904619638203446006197015699673447288983315226848099370625229850246883066618047119849002036600502105840094133455149324197965841959356286252287515669133867271327770233586281945935948340690141545924978579575497465508290844987644570768999283997443534223450223690603063847477727136820666239854570250378968698577003846962308534932294531426527052410845775112489006563298211270206680248141552249558895683156799454225548597158849379550666769572517217023042027840648040786369920729461887824342482229735656014715150839462351366785614545505428828657525354004418175529378571750230616748811022538616500474069064103759510026325964482633606401629143654751548124184643023733172624855219634862141964954721872196944017748329107572671038636477699098327583895661966786903500247003628448920532111410030376296487831851451034637928994627095258225609162017291874081798773167708847475570546012403279398442568747716047218390033209872186179390240080281981462789962406067350756222856602905137994589859143359329092739321763557184770482186971956030155815181109846201315975849193772938205745426589897776296758979036505547402064053825248858189838537022873755520980218724399282913128790435275753251918934378726969066985670813535627470649585122991449277466642509941353847856692705845078966863097720840995087143150308541625465712148494169194204357143784174601802137596745147969029705957238065934254399589464547099830664094576963355101111500692405775997429354279196083975700849553308676099189070496587086842738081633420601054847583690241644176250652286321978742495589909599611108627811027613562436032004084570664324371267269521857866185618808659384065512110172530197599081451456806291459310974538147042858518921615884477162546495229061966577679104351605219569794147790677663717668365017686331990465804286171657710245304182534912450589922425085502689595429742270118397033662828912796530548004750284511360486043836927613923632086716743165920181955874588155029437624530700497443498373931107336822641168613795275336787373867653988652721325318606067966987401904738932501905585594252477853641751699506860278428630938383229635506843939539952997912286813881713663985172975375349111344679945313164597238522444110431285138944509230977238155021555553066311527806219795350989309205508313093052865728265766810754614996196318491124496495412331967480563235215933240451075501167577289501247694094345466920003829348435417928437792659379996606588377819060359173690393516401228136240522992210890345713971350807113623104051817505447474373083519841391329312689428149695744024393522407820106774418276063440464736441201232573653014417255932804839631687280904792570667379709826868231108900684106969095417991258142897544424156862367934675349468949582210838803365621135941250154716443343095801124210129020694259097667771839797379884177180270815335353432859062796572086291969229809609227073032162803260694309557319767212888532825400551966190689558760732569541874110840763046021118308535012509080452099659762600667999022838720966795166049794186703594992081126656858126799709265012804304152952631825616304288710636195894426350800066231981122976352179384363494337802448534925514026207544726083240165490626722737367023955234556387533677457713574833053566829957251668071432061052752292858034190804412736743851718601985675507132353837402391084269725567651064069526742172282639789075870082339059510101158440105513521344009225984999849464429436000056932894832725453977324017751729950605438239901031141176610960348958765217914360889205256057698826985400961916893790619382930102474271542802047278387577896611238838486314308036568790460504243436538981302034052427065205038811715329802350888267186559626957999391910344582975536087419862350538753765927467717100280345825438077240822742586611121359885610705901134015933703124634997861640128450821099759658618523951765580454161195457314002282723902705855073873564586392978495798953709950688207423720329299744820006415676421671394801387400820233428223425528229471006492411641643876939729227712373558752156306155889214186250949349678423782321764685544474577118903136597537063776892739975845178321078738753984581966929919767944964118569402317340880990610760271390086976634952172397969305283123826088163258652459763018647933816056865917942451439133784246941487845473162756302122953679623974403155247990102819120998239051496801439431658038408220951048842983545331592634876559176237332462722827914653638453519232236765104952867781912282136496189298609355764135331565444340522541738267008206088744178343139649948846613704831538232042990201445128617276205341306093744390199974978860893024900275548675078985110841445712347463484384499568681549555375322581569328089844358917202681442149905543906634731129550369293516461624603476631015313452563410427952625532076587550140750027382838870921404578580969732008594152870789436169757758544908901863147236165213468918238873825372275789989334968780003777336012246415610572441142518399999655270699216123364819728072103473960885532242927078707320277880905344780086283541578705870513228263329828682603507878808771926937804960241269655056199187925873274594387440283972873961543722533706028048474698296505701877747717108132415938534887259797425367164005298414044005404751517292678749946672159889637591644991113737308435797431614348244523997495648728538090072184416002199056073857569283467187655005887744837172820014343064825816375548857413511279304530256072115017554524546479145411086728503770454790511605093162585099976654230795494160515339279534657580682960692683553172144742969189678884527640319314232365125718587986844973891484065830610489740449958550259000588173137230543618504287898468973759551163432441671490055550084174077647341033718099583976041579482421866090613706465555173157769519873329060254409977195366463887672484032716825365167531942983011758194322849202854763734666174063022450549489620731865892485273675232287672099636152764527105281629447857874721263667300221695744813688295945231922689242588768907486748159097898438249102618569916846938371099365132243412221110859855831617266688550429559631473386363364653214555398452286448141939631889453396349741047620821854280490968254525848221006711992954318907730191438548757257563477559221028583680572084092230647165004805253184668901363420555589989586967810286304318393938274381254701526179307104273743909309261562454970213337153772532017586340986182616160618543790756663857544754135846959305743714364618099025155865092487366995543460308875449538081939873792252512780971825856811630064115245718149875890993667319383477580990845358168018513399565452153906677273794768133190700552508900795039313355132047432219032662599157033276549532903633568282412002457666460482564423943267566942378544864784820448003420672317658788826713054848947484933258987755195912911659987631473731340942738541615629213537207005529648069635642177411877333121295544313016365075763529783996799276316183854672043444289483123857546633486395580670918269080879418690424786658944388689769233976453773722921834283834210111422136712419605903867554573589774175428042914289743908766746327534879294570684727517710754939263780720759899492770492705412380441874290640716169319953772651711233216448712532200136154847148918879296186644463156766520911872316328562146742181518461051014780370040069148838953230700455345506784782719680242062640634178950299500682487344799192498325678962746217017537593644881159915826486244101550592813775292611089990217801870456129581919481961596561201365477466633325123125412064842774553032093499225664554258281114603142879519015099560623203430614783087287757693105652718993487317964563650725923045641364460831086640017157735265691869184467884853079635696064008194795831579499975155257040000130558402652776191694552972271196090386737220608285446907572903836472988560171567228038702721359214170196326258260157944181002687742656648489876997293621680360090689864079258862952815838326676872306582660564603725233551908237751034502175631143670354038010862524071052748217954700514192292240784499159282168038520644356139019865669798940667950187532557137774806596383843486182640667993013753245855240586017057094307723618685892741926045289461670873839794765564989248712979025841124539241853204844308534698703833990384913258482088624100652287852374514654353817898001567587880336943512916020279107376284469931824272593399618273057001592362586816252797576257853476250785266856975621643688327059220656019570964074183177028896656350766953961281856332853351402586278105872175045473976699179616267671844858086266554612121621348629789391649195345638386825193025338443713844664049658690923047159072852337963172132362044044955191803622705937168611612667952150670781214111402508592528446413868640237226374896509116272136560459681952521571793082660933216567444795053358751029949233592628595927855816196378352127448644466140308564344991533503335964666211252494897889784013824869821728220803201880266602379322532849585754520379363551871938596227741293039758915480302095428084106189026528160692942056369208896596984355450763865331077312128948806871668388630530119700277603281975202323234374503249084288221653767434113804049466316580680350219088654502206880048087969338141622287620532760751359880762946318004526685814615004713007851601917570924749121775754943853642725445593596586470062106832266924423808678945130952950778880799332673015820539868327510800804056086248516394613986050852084418517644792140968329068754523445382647311280771859640525278740325089909489101593883907956513136020217734721084457176400681763185281598662768903656750765248907721429784854640001551353059025275497445720303889513095634034115194953287798734511809957548583303213746851875817086314139526659548907578906180982575454027713089731056533406376674897809918164462965867254816533256558173285442226442901367014298633830509418493184412044131012767142586809462394994219823025950604998833247108416361379893335405064623798560899753758233402223038847120005363776841821635212671002387568407010529292363094472582322708241067130138131263835491424939079999087343790737530628353647537893589269326663459468657600771794101430253721028436376075188726295373849441891480787825492136501236053336551880381500965097537144895711650661820870478020236037923889195411859112111753434295819445665242026775830865030181094249347576588667028527403902937550548079709391670913051566770775389109398139710019645644844318893687188343652884992254188121310429014130866541139214033729516046796413503894583668293774052656017011991768909827037114146836824342652704802843701624696890235881649173112269529266517716396346519077016795740702539415693683136313874921795352707021572081087303474006360688223760321189035918594950291397202369809300938076823005544103958389687388252276151181775634484365754157707057370127696453609630849511679288239983784615901567232814584876990495628079458622505224691283709436303002576852812715517029649220335516435343765337606968369722541835043741963900661170085552472469510154900285637575476072721445605337108285043248114936971420622581059989572723299808058520850346519867999309332313947522988282728430801681853834364745687604391259756339152237441800392470683482007238881578640123552485977748940292707434489510498438383659856414385183442492782181054976202596274784552006466824841778339208822961874835262603514729838819183675925756162944809560042981438127055676241810113794583014275131589595563419922564341589832582147399539876946283591587047231544677471903732758535615369981234757168709651268339925556611323662306901461538747722951328203840410506352674078645364423185050915585389490860380726817699125097156023130120800667783169979095721663858463605278630653645391324185468644320009206332295927333144324339373426438828388731989376298573926153816651996952929235373954561874304149908335311342393573655760647844435095074367730469417397285185184628375806729665393210132145139220633063488558285131026610857883888161402065617240638517928663800808987517248069087557167141468249285234280301874386504866574944554410193215342766195514695638463078203305427358169974152787323118273862057041463355599203669469075606371499575106793845499060178771356367912210372064633159610156939124218870657282265329561883574382897858934932036764946227757753023370091553338323473483391286400827852001496313934287974008264387181116127419946883404524740081023246458803320593192363614728717209965066702197917652769196464754252093530611261338473908204200885657046561827171143764028777208875029302726704004552356461080683816401644400936690583260980185260958781531837715619827075023684981898917514782104409592205013220777080030073188721884537904726350292979905647212734129494775740153058770356428295280834843204303072724921919942584348644322355243032959981082973066212821359875179568533318393636959089151202898227726212829468959515549188369153070450196821210803234031618859513909638243664362657208836159228983870168715105182942814716419600067447217174639583455995667498442692069918933023460516556425147721761905127333075343932262799565271621873770734278123021710257596031085586742170996296076622127044405416974861876266528260621608179761747602589524365511136621996175962162681796347600547958554349942482598071155261229011459752484915857356011895915597936091150437523823259094151188975014405632272442467328824462264260126394810865048482950528524724244787333198885835555293364691648364194198109593908821009514428065849120914459896206380976877760691555336871490841026872227430335335092967960311380400121545282467679384716223393229968238935968232369463432030565877760464246870332838535229705132485474648717044663709024113387385046624382155164464431985742838161191280814703381306874055840653374765019465522041101816424767745629537002850231793076128277159156845036086432587366419766286218145020046160576906559647824499430893874427479638491372508341395435773000481630697536022010392885493827330037940268994868742323456448104460583546178097401751769056652566071291292182054752481452619990146529587615858558266517837132281330455572310298967579410398260768491646012822927923817687074863477415054722358899063316689150440992191225000327419664130710004514454286688758301078977903652527700022169706587763231092988393353030196005205867469532570940887602515253993537393590528373325384188669903542732474095194860020548475051257575366457231772483651592596267793955216641534556506216799346061661765183514618809800322661921762812593105683560599101039086878243746390195873861304917470761996181312813458908636877149560195999670031859001101894057763754353760068915136104063480608308498503142159296006075021708215881172300684567885567459713259213055401177385745765660585875008284273227580050855028140184648140127556696017352871721033721570567855359358212622745918029663753678517025264725635485796109903735934658050217807502108760581839164932439516695183892026502187282224416740755182955515944594803091027497561535744496399356531125207016382554778249035624915644155251564571740553119316049644344785801504354741008093826272836253901023909781575571640427280577299843747863842773582025871960318418011823050455290812224197068689846324584015286502956169161119967779072886410424828154297329148550434169870180859120621694107564980080092757932089275767354754734317585213857881603244010378693689618388120229337261656623776781939428291283230750008922688751034064992213422436212198351813360831781541407497970511641453756072623143560014524453609789595994248798298697662268796457142579657336544575726116480432944838491182264088948416833563107191971634965595618478744609580193541074257475864856459615805434593506049643917647458543402318040509241113709126795329370333341951716723164725852601196553689895548042083126035020853843829885357636229976236021933295516630658317364500564513612883947357908187959222664402603050743661686133409468090789665440675053531344961957711680199940716461988789553713024696551644375708272031339647889858208591305226598416546054649805804450325315850277014422149475977974739647864727231582731564451683912064518666950314485480299540088905363851034986692690815997930589328674071311163431922403628289314838388716767323799872338855133541508374295927992914904539013216747056797285406691614559350812906614173784124113873971072816288956723421548017997103571938527413633591390647034569634308671929502048443728232913004063473057264240393290900376233535112908356291993611372723771938538086022478147403122989942846319240209723013785105581493462810247492828581981427378801594875280112163383426522364960953161520732118875555149470375725463985314031155929773051917765851274605945689781848942694199680146396413497118854845359619467390547984679471578965015694710218530964788047348382948543796059431269189921074198725823853161266597040495721251385000250177522640361410404906021746777387293037685079131241583952698276918404708738078377026843251566406064305144046433513330375098314700592745315074469241966572587707304710656741908245208358162434227326990106712571804228783625731394016627261669443442348121536072018420995285183098169373295804585438307537180328339045250767507808700269827883901191929673309640285553682683396776035128048951489892944859695807318818136206985573205781749978151207230355254618830659813795762759398293118766116908711020562948703399107969590374796513444009143081893559425895568962642258611424192723528474635488970766869383564329416213014883855599410999961059150276166031190919155737772062092991302358404981228267021926940749423185602334460997065907300594030351218159660422557045963219573162302864341502030467358364893878254097176402313251145215699004376400021639729648752722141250134160410217722461648411368644642156136709903488682548825223608398346674267466473930112998355668893706457875098325045043928161356744694952794905432816024876471316908468345241217314437544492929683063846811485247831801022559303735828019995078430497316968144295680352101940049877171792403636387640968104736653046471549254479399721437235900346934323407448082002691888020966099445898099628564444016321702095648325194410755508421332279206814726250798051915033046390344079430204728218453875310836723303819639189616833024571634217863453803035966274298651883183529822958561455246405488152955782340427777789716213669653031002729337402463158708041474174469599385695848757298306555056858216996979958281315167823256733993579401369617356971403894377987329519354845741461485211842046440143050961731386325113301072438939855376856261804736828355994341581552458136542789828515782251094963098177029007983482488810650601994369375567819035726522739220364826111106326908481907383029113805206413189781528224021865980067163592727257103003611313925335543619062584797596001563779304344314744082801907473716220365959533620639630336853039586305300386020955369425075735608739214486881228954376615350990383863636677738785976483010154533016682492987972987570999570123780236463623689791901016062945134514535188203357471472612771763110962303310707231986872986883483335905883541580482151789892847757815536768892774446746057960789583591696962330511945945915298755418162216620613225567999032705029006482431789087391298364545715791071245455544457066037126521341870044277386449030042435667548936268686979626275960569327137021812229155180961073104640018694393075901354052381562458753608107770982922818783099374945521277468073319826549363859780462732131907149140501000718284244257392511659644016412184392082293915840342888519283660511354424261936315096911412797810985073720280801526903570007140821373178469136988806773934543005760581546526420823851274217065009192962206791964735115882166029756400629109383417296588702340405209679228898327015310765556877945192761177562774014619950664394975708698818614106924772226982094676669492850151729442077136191414241122658817924733928953592129235008123878389860841369542058993010815892577507736148411833655791075525361909359188204462411045389563969587432931627743359347467077723914127534750175197082019187081004519289731228809420561845578689126924589031498744146777249435753105147740261536012030187466593943507319741629126874777201471671673607615432417541967268383975821710281610680273641101611975609639287810084825019469221561301066090686549888651893659982588898648578673305028718718873165445503857452364173714492322822526449518382302971780542820840684905748263646668831727661969871586279474909089294304926064902626941862186827054144453951666875825368560643213062614450039818718005336710174742651149416604047766703515110751990329081580582897703074979540745759333696105853588278141682880534475575191353450085474204182704063658425221044464281129678141125372076428681848890275707692016832843051988891103472449426518082723530996050418252006405166565743212129896809815113823757838180440153006309016113883782168095903461153574672362911829305791819555708912686084268573994463064775827672688796143804191440764314758451645974743368104652941894230210511799674768419163949151747768448460678321231436440849253004665966557435026436262201589713339270195080310569901101520385029522854742815151081009123102647077480783274086012830178697829371691363353853277257641076459112044181830664864536630852125550893666445525276754756668428701052122521707715234597284446943487320443812826505391941798768951294238461358728558742567667319810973138157359865017810740611558740607902424113752417869344470847655489773784661773013003900496255319282649942393012300255299123154491530437795503384546692886162350538604368695785149355819099131026422467029187732204480837510932319499678534033572620981259034758088520860469728734040511909768066676580978414070389336910878857831321234519997997633797765625057298403626861278125373679741437361760265314007476268841957097967988194790131965203502497496614900371744923281113929174118919146340351395386464155208896473528676976244148668635831595819187874831488324641880286516903569566499160717238315629905663288253737611440775991344474434789417175228632348967336437836121293476227861725209404123071403491094310312752064518497422323228261094283684722782191667678236514589108447165240125467899289168375010787508722349001044935742889312239314860916895556041313836532117344195261326107291511764594447391789863897516694475145832824223168461431199368105300218551275219904595209975675485711141009478752334154622632474581058755145372538776966847713351885116212997528813206366862489762514431125656476207346398964299491560731085736613390269164411862647969204443464290329337379822663971256944537074009563541628741696034015850008960797776808716388934972064152018267329342403538306479842199504640607575859658701224071053962102020632463250897721977263303704174096355488645755488554093945716637976407933781173235147381258349563346708851241829427796096387613536854144691301112154030680292188156877677519231259503646906054830543734814171554926674859053477527351069951970853566801693855493508741203916432212043011142217318143593292997995668971675053580270056465863826758086948393631391145093756046643304633512287427503803764072785463459225833189738288304293891405798728752141567064443138272372708623982086868066709550639218120891828766577333776004084141484938014494841837613176388058819379481691035637938731807929477974498515426673756902359190368690721549247335232937346292526196027480155571904992809958616630275103045491687781227388958306098379922413868739358949592509812151096305112744652241092368089007519297168065141986316597423426260217849590956259708238911158317983814259860470718272963882097117389715467980108840567782533408544991071199118970935965130698057559984640460833622190514533858926670440072052116336982260089787891749122631376066974318920732801378924861545726911620888833723229632499623552707666958647514105676074565211506917436510498219938045067079086896823437844964490025233534220455127054965442208987045939005200718031603612085559836405457707982249979738172076517732152098223709700801453905388975836546750752709565219103940547180169878773143077473534171345937377187752619173150411623203647044103704924438848024466212009535127545501859868596112035031147663622665428149219094311886136066623340126365699332876875624131671061899240937802593529405435781890522312983506754138732720930459912842080340584963407953053907696651899667671573130501230036655381670131312663445569202549154927049613375912417310105129358710694946634960756561578381729828338493398780974541034927356279259826928481614632310610580971889910900937578378034170594089303537270439807277646595164401627257844790799141897611147456442820848591864877214642370029440509081615881857040431780381417417583406124639939965533065213133005323054530235998125700423089847124663087716777824714721582508244740277423325684251242935868129860823182728962884358262585366464216753836058904348258904375908989735143722422984453401893568702732899053933915943281548975126496234955028147935094517752463811228131434448072693694516637690016129570530619908417174282962963527744124239850360677795409603626388673192100986957671301146707482746179899447110415044674839695011734234225862263696908295338204987162218002885238137092974941221779726793114263395768713179919011948015218401141689075343676902719734759426546953787724137242550503589230213181241615620064143582488373515384714050463860846236195113279498950746847211319247877650486894727610780660809597939846023995342814816978577567441247648827329331772945550256787787308034075664693265670007160668753158142869092829422181874629714706204774673777384156029645640122386486926435848250157157132754485492081391427217261579163787513089254669788995754582111600925433600198514121870098268021080072765298899035717156294558510616276175241558997761655597117789109453934870145387964559340854596988676422226615320798697316969745650522387739810148576988661628796769635590800297480972757950597672685085605681894275205180182010511648957826106337289810759338799423078136650455228658798302733994950032258063596005412285050614093526936699915779490341472934110423861167286933964764102716416855002578202883966480390075528347705717603719726221508219157688144155871116646499279036617988002231036263915188842588502429878965344091052861118793868083203955138349920128256990533524769577104390429077496905739096398642476154364670924523320507983184564419559198618293644214759237246477429156041939805623250190812014790522136220497986404586770233387429600557278657510600979537251013957825920407401598834281687055478168590991810034592872629395752436228203294460607769640945185204973714663020527488630466665794880546149513910650247129635157828987807522961421930474387429613276648278623596241331026236938313775260110709299061728487606783049141705783763095770389473604250167348690903509622561970367668697503227301780889899105807031408349021112333492417603337745207818461005822198829813412652422438563792905518572377864139613831767776504724606061366585379227958927671862455739397140241253277844240116466241019250308249132871534996085162065835655848921113475308984144761664329840590839083101601463879158276235669182113516399187307719212405956068849676627933054454513729213738785263693050888819966478361347650060934396341149409908661469411829677265044512271333102672460597911736892563025972435343695706037486135955117995999970058014968093132179471073569692128946632233216465154948633193451880948080070496099611424294917418452680421678113857264131550466660242337313641487234978953664401669167184268539570938997320193908673600358718281072953345291023729923507989558564115377562101789741893552812143696021434891936975858268407515712495740297611269472389251512061136272712439374113242257310938654038366837343725025621659031297354993004422022369303807500371679888919062557664982115540726661117088009980310500115336478553809925157772856632028749032320937416107659349398260099289557527222870279243506810359929000387521002679891871441479703968194233307083525798045651688555322224604838248892266135180951116448710825072199910863411561369069543947157685962142270150195103749384749772920503321425688025325432145983286814215025802839282786148969231401561720155118827912451773821995540977767970189601711472359417347541952043341781541358858224223766066954081544127760516629477772397856472862555996143454291152231128310457757370700464389097810844186709713402062865752066928185156744538003202496860083898515766511222152132516042204290072679051727125255554631343331986003236316067490461033401024819505912499848859660054385331532305518610331154828538107094160277803547964465471182820258727182688280453527710155523974778459243336129323845395575455846153014259384585347006542392740370660211620902500042123407476585738759673021629696937388723092950173462377607041849352232729135838822908457405497157239760991995448267895888854476365322153367429378549759074311432444222589167675399891331337770114922281547417612249708428354230123944347834551189617198260260416230644591992712400560663665613834685919638725888800605207688294792509506270422252464894889438324943281748454163887683873455699590620251732031829861801982514073308257293425478843474696038773032082298462332553723057223351201490499121581974716661773407355652398284890950574972597554464592705505149768576748169393886544533753259679831624381179513394362625149996777118671167647678270607837901802425660516109402633948544295702301108179852638034837429140857298616821220923606458918955345007892106068832615625988431017247151028232202507210933497776864031975589512066338071674673708609419912460090322788816689973250527778926790076673807336090219895286732110849457555596823847988788578040151156326164300164163919395293246585668966398230323471290770195248293701200021046910360367744361917849430373277798982315089939916889483303569449653196007860627910226865352840998679364396084648646032549026880917254959924858522033602752199172224936733566279207945734260653173679208983135897017262033456036714145892620579766547964042195126808850745799111072517354371965875813791632483375318396358500581456154101725692264684883930369574553335490697957939861727153136054018027230937969414451411962446746057245383151353486093886746441319259586538173758981428291597578071164496104498350412564409828848991961692117534649261663176923355322415269073765224893053854834517752516252264153170899060954222766898051053273693263062972165454174025002996786493554119300172785242180637207803550987042009050617087539208327126114155709562464259158965777711626229084957205807235443526953105174942666289524005169445520984884812243690406849479141929843735362595184117514995059844370600641046874132431707344962172154583842564458027142342627541533766687059527871444211001011055056196973542902463211080687573152163013116277533438842135247251695994548994661306374731045486165647407132337426279973435642335118063989452766359387464249329813798660410396673411707703246473417390737836465258790390607626934937059002399991618616070442756262797199811301020469887853951167447066562056573983462687841512782234485226148169590764405471450580020964071813664569067912774460361619030717994726421017634481460994819813800819665157326219746702732984209332136702139838055854103594161548958364067512333769159931209987281092093080223408748889796583775103488394150512848713982026401553580958204444778519743001471662280784098678622069959461910045810781768074588855185017001061200686643862911055817257259359793978125069483282443209631258335289353254949042696194428991192848969852745987214581373427843877660431129376209109923455485172736026545549820913205128225507700582240031618349991139183049072814589887076943278351007546597142419076038655335792557639726898924047349933704299712615481406124498510397104298550967466348666489251251156761897647275843633903205521486400548022316714177737318443773253352208487888785372873843251461769387738709388437214039056693747143325801285130621881895492812033031326925762558788517632006127098033047563587720486423863746577188516900374162937667894414479414788939736742398129348686260925190771520992307099162592712201878483711507744009888717374554950501231431571580018569501497622084764494304118603188397052167143298059977790962788756127871383813418952641620540055158183698162356364459749257672516575938619607680812612959732884522723138441987519236884651778069953157566584311089579291353608429822799832815364667466781736070011149556792025276096593774681343894679413089359951197561978505996219706011083142764019348527076005562367979959774658292274769137065630869195848842138645254724680716296528711584575698151379391043018066765191412659772860979609745650564378933941964541925009637173584902998522771102670356485234302555531934991590817640123205101403610979018204066550581333840077973207996744374538947826611546015224199995523990062152667766950254035067996821811195395912501810129503999468005292540644675395117266798458122666674108951115842864491674656521726265765052543317013183446165290068228887682381289343348664363275641149736589463309455334861334741364134499360773211384371198589334742391714600266953776283958309978131135338844664635613070774823010142858469965902091496666023243916270901035184025433195737836138944418640321554854474392111206688885839352467343933812298045486143409609052147096903293427635944778284628826533583244205439066647328046765488654474607281020582599752700998799353256420468585474337591815940403976111820461298857314014335567545348861956880456219926056336224381254345559653516829596904194665215540049636168195374418413906654709298828045538694390346252930365816349756153372662421316860175152682829807042214158728899880972927405517269325026362076995491262156893895935589183249439828070163270046635092652501422792412261365699872159966570185675652059128219998912762501566116587826656582337700808511201413897762097661568658099508431045383737619350285844392545975393675304189529582567633706026495519413042253935576649977620565046746391141443829914870697943709032061063279438003305092415771962637854045282142091220381143141733032420106352207168403571786213815430849137880295849186955881407886480738796773049652575416426701690886052376876511298998544186938876255411402357492388724565215712775301586354611339996866235295938123108940135062294144611954815847633521902613892391985872879127147008411524801575280289797011449408471859365177601679422885043106924530520417119843789029181709927780480844956574351328074411315903101976811682466989491309090734415572691478207236999171955836416979016179047810083568940143485854723253953040576967686399150862285104915717592198972140625169287895035081575364041067517019695053460367264925185919816031283882943917587375355246050038269649269910012730998315639625667608323467872429414087046527950190315366230662109380482023395178739991431705215652860318876278557379657610877964831349558306328815938272126865799836833251652947362560153036302188756050804869217865024128396046610320468483401699254334498696373546325962564593529010755414977044707746148129194828791666476007115425128359535432156495705194000901959910365583247611508202904639801403486305743601085835625750342329970998040683387756004281999319076123730105461878929552724924300463259850446602903609573749793401645013530143061179963725940040333150118323264258568645388537529625830615083970201968584618340760891460270599231776135458691355605994450567749525345437079469486536620881947788951555287294467511578506344518988566737005520762379567885486253349760109265723857229540774980135138638593523458432819918934774443045556870065473888096868958582596991979288928695931602920944009815988217690894958236125239426134342837143848819511154667268314850202471657857043663684666968722208631625532412322680860579164276940020460398167604610139135193809831453347099387821862752770907452237561582317865039744760565757304964068375307049234304010210501957874205204748260583920080342340738970267535193378859306799910469982935201397991615928464790316752864313044330408492141341634598034517231350746980638708256087343316311531875939688275582675916151521411470227505888720021804917795496471341468216286390277573951036350160826365988384965846712015061747036962460593232883172304850897508155679265195766054281897554840142066138574679553089519114267307740401135943809228271655637905446998441935779712648862821175208849868245047938625965257238464041524794024363896619123084325478810062493193323553762989189243203123666179576196699890084493697355283204303601109324753283877088541203649300646269393836387970507847454417364718846513397098439349598931256600762279474410620359226973739184199302244565187967423566594767790289045647469677025305619923174876638896015342481015526432570203348881503731900533328332352315772167218998178983130872493573155270270643830191554349868595810944293906787781986060597250836397434196505260531243387210049680595547151503724905617879775256937436431891893339341068877799257238558924004280204003824447503047726549042867768963628372226013119881712693868030359897519154135145488899450638881384456490996425845121835054750396512372700097390078058647126692595590891642677482186576948504708997468913414608510460253376098903110335823562852521023906839844706062255020505098036639893017641760097550890946650964706902522406814594770173344116971637827841445939330577177191081141626438657549629104121075650655424189968243005309268785766361493629602162386625834642995693139089892899654402158150553073726335800944141710133837652604968712736727060479931457138045732083488563035324131683659720126482749443833314392131708450350694888994725037659633292338804524875903842600484417075863718748923338299323196641583949731562481471989174507593193899114915844519951339388922234236376284063567594754579508329724952811407532999882456453029929480894817186241884729920066300304683917917059425367945792242058708205463831480812947057151241344516425796930928606234149481413999992472586752461563092677569277162519740124428230733655124997807446427725631449196308464418792161488981420006848250019779388755776595911515474727998824711093155073605689766189253091634398639931579372821231387110897878473225360049106235704683216035768846750983818260631484016715584263203912102574756285492098429297454264806556265203275175798126512494857654841077655904327436024516940718390822281823184713148594618810110860404197839268919471690248584344499037442476258705784294173000187799578025508610128433250813042708387993592652099112987798563786612382304566467064887037350215266945505603770709849251936815481222155981421338431206086903888674146002936066227096230161090862678148163003778876647040441922224099989737437901157265317402023436903675042967169790630750007072637539571704648207377858735856288905938453824574517549791243258158660193358232786229342565941844015642329872452262295892869965105884683202542901439394959274350502407938969503249171551398496930902700205151788861721119328214907784217806688580616008267109664128282167889833462164784325464141120477962542351907384876827977532537058980535389479206793740493691404511662144182544824151255387921090202611754734897585164109115048733304499789124622314809860668178813755363428253731988897252542258251318583159492200634820930684580844332796011428790273712044058068130682146260404774223894501178373262000632822629899049446617292924668240199502129511968995270434214360924298750754748521925542955687770588257900847671075803694780676630172306322470247198552669559487434013098021294636646540124800285353359156494558917097365359018092509938319477337048676368057982426188292874272427803951132236904491324576246937931737848965257566500308046187303897700087103678623278558623197681663571279314158360122645261936570205460645530443777860935374184654194954415493377305634711712277426741871186317146767402269593682454276736765372935094586181436618218064895456808589444089604409513900488720373541066975893918800310142485308843123525235226811034212546840760025654774444595191054693212058525704096263770787524272533188495115541337433395462680526972658412578255704694627616752429777922730361640726872277998272714824764844372620108479034537692393825629454418654941761780438898472673313838294991045976857155031840876371852510141149682967563527073313646176844997473933653976311099577889994541551588764203625341329356369997442060397759964651516712629925568175047254340584053692743850207118620968610337179121501114775865527287467522896004160994109580771207125358659923649657882623217887863855603959204063662460355053471887798385534130178817519385971082721922743419071658565746584463241106346205522836387619504587618324587540623444013790507479748734757431468479696590236792910213741936923536524365835004187672319806525517717406636750829175429167049256556308445882414426854733722163371486047838026013000799310899827454831333622870491081941420472964694868257469160195884365289090310540424218782504220407607483905404618867399588437471316712966698634837078355789911514124334846649117384852407857737336191187824772207303802658648863649626840911661342787911812304676015677810395892682152975420860376560000768831787476890971678823717685292885441728904153939162536402097409787397877499266080987867847513455986651844731333308403492112181860435628435131232464716912649661600395484239467525885798523345019178547408582953250047884287772962325728444659871313187472209460384199687673305104246308457443490574780701373646791711305891677504865112839252511521798005843429734470412354323279399170913154175988941690280009122345557616572341414232110364364799060769768959220400650160758806832595346919661996248213803464127803273782957441423777065478955264476975441470110961860362564330759910821670872893944881365348086347012925136390540525731512007087565025474993914010140126212389597230771064062596826698448798213445261110906950776336747989250305204565136048118187501906927659870809458199607045006792255934658923125559234381507175860923356756481404755949603098709573064755366722397789990110170754771312438433626357642129624906167460724289279625456847754937951837790051699842943165360188211705128147013406729390356738081480024353627304187647692609977061739977462939575584503775387024734451337529942776072035057231316902941774487227578778221766086584471382440156787309603936329238451155471687624094869738014964598142691964590731857113608410414372137209273753015554030069297769580291084638540661086486419399244880193792897078012928089615525802933729354304097644356885511847433328755936784691201338917479097321386618547561581649689770686941752469731145507515518341371249017180130419728174662042629908513771497886800025217332678028659527788764309680887980722753973367708926183121099798792382180801032609015194571973208387259491545580607595150647889888822898063404737988638935118401684429793024137514459353532759933938027976782565502075412437300611624826797077992895997905134266118180487474724605933573352904654095746280089525229526604189726589729719226004156554962154132634048802286396071824722065515534223006011821877444358711271486432279606177231602936478822647433047301488436570883439110450175430860386003215429293338238625756912708431154195854698115828346863798574737802954250514234083774582818269092994086666987281120274854675924453585198392996100754486791169769507794087152706797765867600139332442739374414221022824185434252774179507638263915972484745895541069216634486435630244182922996446425364483344383913860121319683499530658289899574737734315828513261735058713257863106613523327597906491678846064871382065728182887424935194584307537995045466240790187311521467577334165925218946335500298501421292994241595498665857153642674640801648526903608858046955732171035199999672472044085187321899365822369822542768697709375559798636941094473572404105337505891109449084866656853920867784391231742786890197533723849544818373989537713413996194122160892398832071463754554231151291845636861709301555416690806038458201623774880291782569980747193625032211244098767230009030767126337882201782326844083449534352534249840900522261122494072581300414714237329858420377152251808354986841253906823642757776994718774361526066234295234930256081769796973345807487554860725279093743335459164478970097591649124798044363846357795298932408864246833215820037883662625917823829909623905178085251206972362752165618204864095220204561216332603592423761868270772875781790024795642732893233135567453027987107407646675381266661181994627917189171891925021716537412942743502340115065287492903766401002885769916582666358655579389242973215987984533980257321616366951538657478005277909275827575716321767723972350926591481430061387172608250302903266985269168536431679984061999394093690493805602694963197680852444985847432805813662909836365511392277242260343918790000355458787568874110565630553275948171331250855469533597608886538336608699107178636597196711775018936433170461835253458438030715818415905199826251866902364989985920492299630358707036542254179043352797305115104192731890787239973012392678180410067200134356981766290691043618197086356756493587661266772860268752761523493402288668163815701889307059752864176038149151737894227721042539270445915459163686497985417049149296979447760284615514244622761075912444988768340038065789752032611244142529830182673100662659834894979887745725941758125591219445814764343458076736924187461665460834994249382016371867803357679305392696846037573600870730137631184973887603360825614173884880785955442068340891627794997074980643393489795276071665991714278976243235738504916331782098257792630534872562406351736518696957742337811032347006435972293303259776553847864079242840540189855669325833846469641020857027555845300740005649201442608713812292242508939272286207556237577520013325608376907508091498915073827722823065433144322796071921562669214992394328699218875874072187060174998822930712814629215365101621198290435493187132092483188769524746315041824133897131668689242036568254322957409568778521351253484898639017437930368756287004736228753738053119035585877877349040388257422719568761687940941270114587735177785779143791294784109147637250639133650989678550370648631927405632357606143124729208185043335610054194563021432134487298047075813424294197732982349846007874339041146388819701272127625589651048985541896173624578504532722164530993236499190643085332267437163667654680100850778849827334311805426958987462441162630571257356950873439383617747952101254196604113980694801834014758025866181218850566280709309659265888562370710847700304056392480883151485202193183448021339263275395983781326442821130267245674436357657562535858378612744200660295967231278192632494054186827634215998079840342989717040652501188266046648605264499150550025582917712235125742729073352737520224770963454096740842253657985791879030158761148771828753390100131977563369459591089709474991978802377045952693987457832690382548916517000506294271977515708504192215218034223226150866749844298518698172616946986811760037702550372277138773867720675334904942890702427601981966060562701839411887482140018422288562272231682918801672626846911957876785468378157549829953157518325723933922063626407983363847919188377774325981651397411786788337518021496124583677102212709645787541922728837502438565570232263797714176901303726547444344197501594278262329164941188683586089329884330049316205421357791738996035943725715292529692507492057850446246880875379845207928959907850190029814232348516792461897517427549267238553497194072747723658184424502560525606532255924511229540309674648748149268161302644912794616161480597552301197622897301270648875722530046803082131150737952809594654052914482774061171624366605842156049044854535658513932713720571146180444313075229645823909844942878691853057355210822693445084494543345610536382207588354776908934073373414804314348892238228163353792537634107178524237003669121244597054953545986379792345909505756509045402850161569319082587098494374579134640811166663942512646744680710292060100808968985619684425325971531292245355664195961445128094259613375691833041872542283947906643406838358989461621733951418837553287098725967012011587023790471632733596383333062943646002307478671537507259831751725408707376073138500010416922492711669499740149617519327991407397609128113129269210210223676919507612439880441585180998992994525315715096442107751011005853001643300601685588075404400026334043731106584964256228435133766137366802516065542585134530054689153318056909639299453896957922107456341133857499368075310404923825840145288344941133916146555559473295499203808950076106662749663664262747131969796366237907354974060746030339223931766858098303197180104881292914258437440143475433863787281775486088343496006227654787992038667442678434009498067405775164410749910500274216679522262727420561768887986501422387941480815498544747070875355829292970761105746385873647754513835313657576146443705702638014943187862509082022658944446052833556448594614288617659570133551355400445848831317777219500782934467379147848144172599140928256557985039858187760606585521593075765447257070363338076288046206612684207306715286447784913812890248922201426928491982966727408052214779542705256409552686075647329526841562831777802361436513950714269640039782823067655817917249460605231229029132480030864600859239019977367537407459805399091634748069172600095566793118043973240974869344608900722953264022561484772480197434184869031412778054421185514375866972954077778114420854085647559699659239111284762490995989621237275432477499067062100388514072292549484272735890677116570704804858225585334333163443587923702593324107352130273777503574224774494603154207275151278166455144009182690289348938667214549258519524184609543701457100980538682680175039224284277466256789746256397110919671525889891566137309641058205039456060675463827071504482679340175146610052381122646017536212379661336547444325931304139605835462239771661696871514630171414897352202435692866934446379001133537241566301256462527979584305367722011014809485498648516963252604256929393894455875178736328410449102252882468445663743133351705061676538926561816507961648414090046475658748331305977329009644000956349412570672814466593464271368315230128834567271900086047794621798944120593734826488910734784264423922841490404531706270001175962071681014695958368847766067463535890810674694705646357033490628542635743493143610888275343992627553037202932315278040532954734370186688859903618685320156985020615856694099237930072183284330826880779003040924083844388508475997550155124828692237278298783636044221962366206588135929296846360107845391562527251829390149342811361846989697482062244170363167271639933265083961710091758828928511588172134674447111217186133021010791690691221245821251217378100336017967900292116175710251065822386215933062510809335762523443746901794580867787989121463748904155428216273179604525129390033240081016209364937107695494462918593608295804749484143509366107152877519886846794964339332105608057930052215968348702173279602012219161653043397886365504091574299987033513629275571722143436106925281616722350391466767265104473920711878009541766216665181808829307799690119974954767995453071027417529079839321790600685262334258507032621981303307285166053195828381198687865970694627063124099147008367995290051522563653964675006372132411373761566158700365115316212244864604224386644007303125133319945749963184670927950821842565058123184660563975142622226895245697248015010932477934955639376676914686701002697076639882736755254064872184180643947784520467661844784396731247098022917219845816728581189279111379312595872185131333694947997821741758149935199632356244517260639803290179120540630322689341916338025869946965757618538610249301809903058707880146597715776571997292076719240028446065452327750463521958178000141073514665013961142876887113133214757205718172490042372249096828895579814284231999914411973436067393319520796487801444640330997794454947501197170749898227331355387877543084382431777947055967622422188711670739573603041497565098992219666463363576030163507226471565773071267971173652689231432598688457936512331848242305464892690376897336912934273202293689327803128365804845241814607709103298827503546587663502144185000709543427938897600271561199266817500159483541276967471565466923022632239953333618339800989585828291059333714019980615978621592660882677449640701485526139789090849610432373899558302215727538825022756862902017907457182732930973018897068359598391534886138672117188776950628776730048867944440925701828289662793556366236050117936289036556106158117818397847679292931782460254835788408935714260907650041729040130300380191240502263407019810794071681744062805472694676069189285944438604024362077729780988865718273303154216458501662594603983990442723228828689191092525822351261496117453915374079544910955859739111600027472409842350945858120335127014938604714093320776220512014016648005908188663778633207835529004106934814848939129080016519203292111651506991406712326391696083281464213105116180725990630497112846739599265405162901836579983394606682274217437523188304009365177783226019449564059530180950466857802651944965833043894876796744169673847131897836594419546519730028376156034687465665160489578810535619894460263449233760818692535972343939079103615135196660983779244375467476014189422645393708302226518125606693764718652696961044983174031897125706530690513464877685446977765355519117807720898587614658754266638146728973334360583633349735776320820522153048163721872186236812017650630929112916959890892102295497915749167254254070480672092941192417281531625216026920124845864047300108685567792874243717962891137509826323526325926165006330295426696146152900187705391372519262812611667535386282629329350420936969554216746733551935035773146786723848192225372207405673448483929561159507642836322115094645273149102547884379015941039242263815766232050075860755088453755338437591734454633143454820408258571707971806821702731382817220783475439794777623645492377812382343372982292433604560757268307861127737148836746631673678828862950074264216512001430159871792772179674487113370323184621676475807851877684644089625736601450726932464920690268157848635474555434034783051108562209549586087385661920802074399004255108047652218343735761615110853899643094209524490084477551627610318305704842908806727750092862198839034399429698935672917135201568554594369468363766650796474217487285592078001474475779873936771018778625785368921558427621368001176104220704463178167632636246153657250013522695424051960284638848255275128601725417987066811933097625367311453225726437648457480495728388490957046106715429622652188580631099715134719068454919405063490256089865306868920487603616601592174407580223955322157327353564677209005376735306653718115798767104242811312401372322133558015124630367320743809593179855403153135289589078755359500687463829825546996614987188986633763917710771185500118702291651675052865662781797411379531420404151442298311680675327440304899954389478062269957155905731476089511047328074089624641941135737403335484243434957035678500746988347337859187165422373962679286682290485197827241433497477117375959633910954152682023715888050491632505666065870703955413179167514727805801573902967629079826164960859406034856575563101658447064963910280645460094133102139959107183984090731776511691944661466175904859492981730798514622049282665937140352477655974816860952780717734842517650837010564992957303491777598445398604605561657697654602174878643307881703237484615328469889754112011003977752815659723612769273103292173318884359799098382494785064715439861707296965883296580258883561000094119112822674777407490870141959796434279808239430109405584823291722703297349234134569202573805769940872076276258412103520440030565711875872494707677328021917827754169071481410642853148532186010611236881077238321989538900132322288124801402428672583614477888748039924020128136005573974822716575371106895207887596490713734781212935489327130152645856767840256537306041605052459732469930885306536221620063792322744954525507835042292992886724985178555809269329556142227582810910625627404940484106799765361470677326745799191918338773179295722054859776464758791567269847006041592931425751459438728307397150885399310262265418869269188995081438103916764272888201377975411789287689567935222026330475071497725369241196411190731167199147807577095646688731990005122712149480082382496750758558348072448923718751495580114538951469764812647550514747119796529569902629928910878644266848524840453837732441992313026931549951011429496188608261047333527855786214707659304675437701014715337394670156363485989274712678624658881233419857739177160323716484039249831389221186228217610500091276203018086035224378743403011906430032136719704588443179243023994499540548137605184155221101709854964743961945242141281929974261496307785764779088660295357641464874494449263490986469926336086167134429704920510242594417961623030015172104161315126591358671674141085873578597028075308158132998059401757757323852886197652883462578424990046103647812990864755287331620131900409840610221901333577990694033247707773604159530404033734316215286249693746997973265351148876458710753296515006041735175479306920523155659444881997109892821528961177351421170192936625039813749618978734990078180518049554996683483846354525565438317913052634766486799708779643403902617734084791722435659773989443085121025542827866838160929371751335868157194334590868986713395471079703931673616647967001402355729042632611772392218789981342176993150865934779181903989456269050293585015296746131464955519264088881487899345746179460416943194897871736395215542992075579751036106704115536296285911388960963873339091124502433384074939603999083867986718378869105316647301370888965212921620000001963207648836015578980525464430233874995353523549804681737689470407874641787828114908292329192563512673191666331715575476609962264202319106084121650272828015285352449289757284096748518444165945481590715823124077949990456889217614724836598659494773313874026141908939589392553249686103271361589813615905669670658774878462069532965573546305290379466406504195270276319694569744146007168162444059328089606951756902994901647473578107604740335563840845296260552502386639308191757902304908289115268982678477686040953124931835868958525672834950062964708927215770109990810202352203110697704789119289059026895777445234342093463897340700845969363881824321510172787993550080664368482960413631898817648192060041610579422285619853225455243745232615742396309968024665693017814200814613498190931558370076975947540132522242405339074400519087722431718956032055120813463802927938699318380611173238523768579835278468677057416648357483483957536183962956823111568273804654274500904396098032952231634628973406737351840484428512795443764938021969014935201978107776300443866919179625519755319829040347976834515647738800169929202026441090063522160597439542186967554107385258176581550273112833169710119778316862015800028803482954631302107747295440759635541962819430976710486596835918316905356534504756375460852823473447536880384833124130382268839551556110309262191282286715122120897682237116823887685405441506213451293440941731851585063690759295526222231450160371699964767510956440704695407993318718056944533143622160249825094223716456577396242750095213768901266905602989302591225056072861988481961638205646866581952376681634102794228906951411921521067189182115136603671111009931344091137366993415121516176500374745617588240856212810526999360468847328235369537249827070647245540931377133839449765576007884743983789336279411808996636478402492677560638553240672175007589609914746248597315702745773650594335631632132789630324894889437090366028256243624369944634779167529429631526520444619275601466766288330601290482234096181350380050366782537966832874374202327415709313192515442323522252095519473145434921288447030158689944121474902139141830553375785501427883777222954670838080697340775276031462602122666087578507970282512361411137310743474186991628820603735633239154696626132484807326901046814019729708644968446070381264056908564827894498481420444167657164133675837481354928567366148886799145905497538640436144611919040735494793554122884613550465381630935985778603781878833193732603868767069514166439878821437040293667476995189010162845093337933206720237436938063195472159439720854764726050076730968801981555286603777659952499214602434280715302809460757102145411412816135050720421802335711827270628682859606169081705330152929453314893859166274890588895320142476327573777685074424234062796185977438189968583735766294129832213758490169142510406613450352416615898986576645267079508713013749360742387553006327972334019008575429164647509295165308861910241533605832167082153239874149924307891561194813821181663701385903593590089702664809449379188363319469851421173631238950803144275499034903794034138524459093101887455533429985783823046551908516099597316332000227394255360652308200293045282252839675718020927874413963948725984046764548913264887044749409917296861895201856194582344349595018419794400256163264145808571022825323055124449227161858615693135830155278231714866321696502496546242224650322641553390598990403827800690847081548658127956261961667314081750258747281090167944354576690867640190560069997951972705339236987489182910481991273746488552077272890723245689774323740653764738611459198485883195649264506155192921670696175214036951573626906353744233204828771313636586768882825917128916755312585524103033829614214907663896408156698649951582186577330316564235640668503843074715763937688914569433661606084680333069564300641213838626710597275247026473828421964266763965330055258835413924574986768051310494610687799721674333978726406110115067599382996763780663486029589301757118659478270922091246217879219184966618402823236052687901358428178263234393493682479143305789935118663640908551060152175193522530333748858033193423077272094867566331694487672540547696553781113175906847727171217617397494430151756387365280630586098294266564225784305759768030462602302903825933598642121300075841388911776646466410293256922459661624022030954028224831354008955155650780844408226299212928410529511748194816748351022290922416281970214283641266009846023236018695142879167958301631641459451974681728606383897064762578293033662906656093652600118949149880862230766321968864528922947094856709133084094918849853972500277414507646112912403722908590379604501013721355451858398869877283950732300942876696812499406925143827131720030423093680995282066304591975625676755242598958442838486938845534363309296911776499333996824535065752149006358708959668230520493850711758396274486978056198095072512636098907625994557666003979068171520941824129554090382972479375605709741502745046848439674899078914504774413156433687124800637585820818121486400674368712103379964295098790770738536223194652493894395805389911495387458348505137554927305179257918564328725856236834446841517619233242876461452279659851444289968547173573439718745421904311739253746691514878416592813654151054007900902781934984873617879796358653168905630081146564670083095750315763490578657188483887977277584856296599301476824600634747932746718667579174893709721643031915628912798162031636157562324115497493159036175816846171856815484619305618963144256557574397055040749465183056751075147523278563702294034820051170456757224831015697568020962603915130647198050355657083667334060033563064922221877587860527111226322250959031026243327450125878958511699371408225975120727768731058338209018996552105575582346466645958988655286571928357159561322017575460021859226137607634789134163610967609237566894177106713457205997907224627718127340850870566544515286185673131614558423469409359481060997950538585394487210081648725108043287723629694903404836009353668514010030948997430712230114123011132444507774105780525402577106753974043333255933680267431065832288299657894949752164720253990983065329226610842785236497069510010943566302943114654135386456602906731769328775394205288799422243844354651697095901053476663700908082474302042495410726449392425573210400047639768759056992138265415001600441157597245692021332812351275443520707312723040569997605234863439539129549687110343873731366950018607929032094135204306210293746191249055394259657678939063564121682899202194254198570647568928254542953088176670503974811958326265322035056867756022379056423787449459466583258033200962612034279946258791860336083677532625182316435353727176090276158939256902849854476251214808034957260930575979898224146420790457781725483058817116323694745081947038502358457335391625644658408339276121312278234392850497190233735444406613130305860850221673897471711830803157856438751797125699479892952631919218682564667982822702975498440990642259849882255733944204901831952187260889323846853491131537467287837015217434550188672867579411333395068986332136462770002158514203300117539616355556896608716562810311614204286972635184470526404380080577384037541515665535561985936958069631432310476985176028224987867633982502287463251679568340214578435014284755440248852597876775806575668742952063599914262078149652720464830054829578116486407393026177764677810026634932668420757676019795923418657065797656541238427525572900465740163019099649081069924256542042109515729973865976053607163213750780242986408670595302263796668451153485320496662398996410215676806966907909117128674450255135115602871066980818779674170982831137914585595394461380835284160301257100890177538774633078793843955582085835876538395708736927221218495999852005287077462929124028082172531079746440812050771914711004422111704831014264837735568577518454345385751986223290030396546210553137338711435875671889370046771712855856134326786356456103500644752717478782055684153004392973282221202930602003494964511564346624925482788625246091465121747379194848697026887078665873799680681181743614377946649894887234835589796626973674667011966794698359546064014419220040090301222107584336120446274697098518558403770028625316413227443662980619748123404177610904952522851187045087777497155451129355214698655559675321602028591105047103405620696356617672205580132265508283894436640291157964142136209125160112077966571625844007165466468040597319333325724612589920675141411075016725908276489982029125186052929084335874647034863950028466941668053522575963508709575243798983486108824061381192539636232714297786987356883500699779712969143654840139099720147396929392629930990611122606581077488437759452440076428893539345529942391548543204978278749516514652174164414734800114530808819525549619141057124555014697665376970086797358546443067586387956556072225314305546612561925432474609048987092864714876467180005658392477560918654682139771496092641951941124405932279772197655661433758991107385804213569218431209395558078591998921402629219040829386504610557896259552847173805924759389988156172682113931974350874070122617277638837222135245322125742803862826221241503554327538071709887912498076527308735134168176787740876679517881601254907883814110970565535284982289219880772986360350771681118627215899702885504952643988003681388730113198960884171623502103453886971249990788308604288990754487301889803707626314777581043525272516240324337789213759091822391835202865792359183178981601103760898651851946109691164141183826679361083251842040253676905349071783970130966967740128769889674432365521982802131877374825009686556870943368078554510369050443873752108729300511418971869115815267991499546224567197490227606805545561046900188406147608068296617891257837114761245220622266397600104656832714814321041914762846878589509027101121575890463445154171874127553173830280830330347113073818877887580717254105218764887189274839569470877961807117284301721741549725788669200908050865667756566952117383986555009577956071960322602525900973383464093011410833656300836690627849254373156357750355649568032514709972742713799182250814219406729710272402437207482561583781889547625225588080743378813704111679958560593018245483054627167534991546464838962931600985622687812188364347133638723035088759316332035339251903005828550642760831052274175345906676807171889403836567363213555306464632939755743050392974274627370997960492096028101241364354922632089121686419667114137199351575469345310350988891104548202952667558471185743419319544774022200743802939376243849029596197527859601884640604590875869147147418442498020609197396248244741639571706491006771931037833833156542620386901297229925820952128691684178765421738867915834683926147827417346400498332967800997065146438175364738366293343100504986215958555174903543602739640386192935655450938595651128230601783212771479916590544235449703212034412255889362632801654125597657494015329886587518273533304262765738867332942846090493549637602198158833829476473919820553748959104531032145820938301390377929209487144739219223330367833165174137221874514623461429102490447821098251435304538743302944557726632899177758251524191690076109454790761380986069616143601565485773520662501763498177769512068031051315203068515604720470955015966935066150485125417921116183587213365351825575084433908954474562664209330309886545021612433781592602151481538297622621831002491505182746429565761938705128626515213353595756463189872797242621087619052430706294642964075555945123880052593683790116179911687442557183048630271409435404514975920233100871691066216677874459920264215580254544525385160407879121761156532692936243956397584573630637855115047732543173636732892735926438247532874424823143225124566792295329799784932315759551836738261251076182420978764329283349669411388630555151835164280821617882407375229025575089671839208503555755751697880994548543557763626966406856799895425514526464765889182865951875564418233051534725592229349947270715134860310997633708430374533484410024531638250962718140235571878270659399378052020219782596047195938001715528944689317243608035426988204166771964000132352754907829742095348499065877484895345859724545747833396746222070425515253469855748982176310432228742167170170211791622675262899566549984027014166760009784648651768231651520377105897162237828437372601532420561664134835670139916813358795046142218649762248865684132744175680069583716614604968430073570158701496071703975596230837271453302104833068310803055166880137079701883194301827622742404059351298157248953901451795577462742526449586544797074585284500296350012218172825748277679686292838924734391305372106932539102141293220585868977753155751696012670548654705971716993618657594122036342618682823549168097229830289130915873734226526612225780740889493951497423372631558815120109982235194819605900549485158034367311689845967734869855723981818723570127675187206505235319680035764146979423612352955397360384377118576577627414732502331710367433991866069191235033915566067598482174637954795248944935000835369963034970815142645293737833417158241836585557968010822193743377993040340732196341946332248686727291027128765791191370727556438343856427775079225602641801166423274548358210246081354352984195650795075993787210297042165403813443036077997055377239141804168744331251772812132248904237450284681850412122701138892095708531665605232480766367200481314256861993043849150301713525119706580645607798435174111674479328680364471530920291333319577736495143192877875059712200575779229628121633193439471878547455126477905763594004224731407755105563342511957415405597028770749271472326611885567861733961495055491122204849826036209518819542373986976113127105730145583502971189063672548733846002953097419188278417581935651511917315960757597579331633222687979515970984613933408964959031744302655444072577033518469715632569565794935762043852781537234187269095868041374071210932450232493035984331390029147257510378299789241898016323049667076289956775089485054369516452097753634215064146025521457916833367261802069438239325174166117019954205235007086846931816658107284349350611346051367596261886315080356485501619054036584499649831314861448133147414006035931972073643827553686644653002934470362468031652756766407231550054053968711315291390625048278823312183436205383551427478030101970698205129179914979587543635368009156171119100027496590129480918242586902439674123448884855351169585791090343298215461401200806263823394343089514932053583093290204381575297581145284167245298217469857463748503508735512358376768009499777469384849524317812448011747557916432097628125782371743529513311558786652826976774171364590140101429819248745194678909659277510819110556606933991945308602664953889929516595785397986877197446200329390483520134767542362401350644694600490346021227990069550118630150601833407408691451188443959212867009206121692921778381594198648893334765191444011515943985475563003592322271158238559173336619388119547818525365574281629583519712549545242601637809474257440234000452171942038346008643813999522356631686732891543476714757853153015466907781176199336988991251299800374857873292187244227146359810905901584696011665536734582608257667665246937213910081300472841103415835761562163759330898834563817302843411044181386243372953133188347966425769848854557166905695314838604875530936062508879374971787918761187587518062366208440960991963045690064967012800073276187225861050155798724001191601179223793938963543921814688675968143244545416565268447267324169720316080784226048452018042597877866230859243733690905254252569427358693663087755370830154141541806644040774421751440164839668656960835180529440633005878840822025615381763203364956364129312974115235674173387806157618584818747977348567619244130517648890947039430191637638015604747239145305202362352380277320047231717849586274207827783491593125347869602162581448565030965296201495252278315471823718370093647372959837713805328776853913462797210230432916387890513119742872593649463763458329134244680745545469723684603983144292316145082078782715777047270558886223868693716922185987662441986481688116954030460699469281900557877214688899781647190755520700876499620751521661131958946794169993698226727577237123012208965032509745033749024075967617598813277158981656424867520078416288477797614722234491746898688625777878467833827501345665593287426428730026395240505246482606407251864821495991564429954068365293279742992604192684378751743105136620784116678964299646418754150337254236906921152749880438683104721240712990547781047014870286004435587451040356407165883528511627717654132334797252307157207310334592856907896158882673139290939958105761239167784444757366952458427148670052536641843651989408923504562569415796228208643544877979666656292701641050980685160841624746903717031409172952266884167512208312143334269953528083305482843995077354856194898877820333140835485269801260920291995126618278095607093646376268407752308074629094395105317852152646269225871749147930886468949341792921937853195034853980080185743990410489231530121246182182375646851179462442853818374573701585369669105313764452398886842485145785424180052325952587736945730704446035643795591635598318072822180103792184496400360595977323380206257822033422542019153433200241870670083373004682235308332069157898665786864698890721742249850571268890566521158317228997088104344788255971612446930518942689153514354637326882260927022824057846511472300037444701163502542398153619059358318721267631635465051457636435053351341120048544705938273387730468578853725282893384851023666473862458913224912702931476000047721463492759732399582717079861872643974755318050931151328820437524768181838719897177025542384142432991192834546173777493618128757069902054382972958619207768100035973017706325297338398294887518979346623754180578693927180802523061220398646178211099107135995543305374207533182966784835054953646437111936498451150455512699271712144828119078019144396431657398594992334300125973785600066086509041184748504469384115605322059797839349362029931341176724956093044227644970321787421227137908114812532440635461534564915050019101772876200680728504858174409034040970038999163746926497360579023590393002619640527556753132185447011239042670527649301074896037239277339473421522080477864394660300333871020878153254724323055981022591726076360686600965741259690663156552794244649432863697020333982469263511480447509004819664896450620125027355911841410540078260089671024571706150496090228176589776911856846041843972049859673119664954199205165731812125403654221904638966154987337867837345230386996505950402492819968420592411203835872574461604032754597285342155990999937495399571741161410722044916527199498776453379574479929788406175518800045098385516940244703336490958891614201353092712572661509046401841478468298631456998271652767771913455917766877716467796777425339987597475842765269789611488054029178396236066318440341036341487307205790731634290399463328258240064637383129843710091281725531230830768583235450606532514790951585372093405688408838346495605483578309600547120142543410822133847588612666741218927735246769959489411446599792072424139268225939990289964224633610406338277466474157222663903192855312764951970749248970722256853094914179262014465845841636478446186743545370184105102190360736771451192493729194444868647529430464410361687570538375199089605795618194623198602834206048973172685094685695457442670186648915070999801988054732052425108102658777316817450478531173231692389711094516305807341990391159471558556528292089330159757335868845911820884505518919982046393445814904346760055312459830958339442903034282460113226912281776191270017565728917893433301361688923959510319317058986131925985817553983635384910280258964115082636422289895798667921329055317869048200158883028076499224516330688399651866255935756415942072231920650412090341013047062801246115606075221197855199222758751732581820619884576506282902329791302775810386676559623891542243874488130688477706807513029896645656575973840463131918721077545742619541382118995183791830807442644653485223869283597339798919493390583839056684672550041288713084255825131993071190082483167178502301727532447288246296369954425731840795495595323470633688955488563106139531084239055070652415645548629787668796001510118105691234549522958940103407413490842020954003221732194104702444652406671004756849580409316040698240584968995800851855863248073171534102327895376506077304671105389857873547966943601049900080197191180178858345636444420949218132509523138696943641010213946243206885205292381781854618883470490172950391289615955074422349219781917739642574739333093511545195962171124507942811402575491223041758401626171157182859197754509138334574978139297517777587672454757332168496685040388204667714223892643379799314251576156109635654933079212484049605397681962328681999246617622526795690613985254447730338456434398871491213929989383869071984087834939320641223917121364826017287401993713290447272881984561635052622455947369503984883609350775616895778441636331314981371221124130829722062237062142867222995894959661842615267764670985606610700126087539363137800346949731853662369614187124998407461952469437581595581535984150152601799520537235356051898160213163300890563492372352157310980514432673400643952102308987948953283002352251024827894361327349356764257378640467409228665403522277499334895410416322158882481496186368326658611647414655040416734291029852391404047311861716489656502715790324126259303587028652773876420684133436306980227014165927927775112479421107738029305546060915336582724009896785418230248149909425747301297917263989891958327756709644225343036423500337802983538886501470727479437654434905856121928380530282448778669924246626308953220141865821376909028982931665191318924225457986259454226516113852963159897745893542028983006248320314805111869090260622279205430436390744762182272191904080360537881475263520943698443566271755403576335471400281207581951201048973510909060074200487284972491849072701094913781554647160267049523558157163548390692925809984028611033956004264128082121815170999137985488571076452365363897106556862434569317555660113457151499101906610893987288288353719161423911458607246835902007248322005408053488527668245669301573233176912204348234521131214959165974707449412397377933632486990702919249009847877929453759783744270053814287938768856252948013782403649774218095230968291182190202975906196629408998360536347646118640907916058878764134021050277368105810799509270293458308664831796740109142196583709707782181971376661391055172440865162052954350160574980748161996384807827470317368854228249147001376522895680369485981999621184500983435246590323481860145907618130600464045900944789470979828575508571059270957657451987116135843927522129777899064084723591318865209803364703732914490424052355960708115670411726729310056326532589981863498086953069800443899945092801647775000325379329671829809612668847426366061783990036111860395240515720455925370381536427419830159553209772536694657418206463584537482957881254595359724608313436077796036672157726161624989804010967849893150284577375625078427035279099879130014573892920443837031145066504908720802278411282591977295186165716199925134116983982908776342056459012116211684058591638515731032975866561477103874553537635522910600691548081831709474980388112611391821903277777184003570560158472562477629835507792965125785818633042786953164862596509468255945669730514138738620622461294987065385969881485796167024009436715587553507027102197614313588670605186634184553233619923982031219671029524580497601561170515871323907287276384640895276932371609632376648584367424658506627783858397613713160573363959568551530637604032118878571589470622400091295806188090905909163485507190174783789611863763772139403182516051643529353573516086870168217656273219328029767270075080013340673779985425508946465255812922907555744366900234718394362125651830682707803536051224374539596488110466458549445113448672579600581689405664470545570414582815385607527874904332675993026819700420404872888418222000928354655873506150274902747943667010519899253412836717152564979146084149966887251111475256120082868374044428452290434210616437131493633346272700414163821333618469666824779558153029115345454825136923953057867573159248819206268485612718086772140810870888195530475828838452532576979774549749897779858689463646971512767347689600435526319870090850055177245738262252654830146065606682289877175709718957644244905889135967909770988410964167073761976512603280221388014812639166455454269158082831128194674017601458416066912070844230069522805187209812483015473401989677817047849737909347057559647161382234149835621842993060372594641974128449318431366730156144233607068071000186567374751839446847411962116623392337640108222675939740059991495664286142585239466243055645568680863001614777126450252637443589143339857156104263327710117087873728669326708764118374429521857308149573161802770324930910380934005308518336585885276964252956979457944549842606730110302373445434852179642306803686811523885741996024131686577330466753164694425452032028013262001017517908940769244801865072348648871332636762578224261045037713140165797666832879749888356546706557002444349841386372183038329243119343511147129059553877658656733507189717167166832673073336459055734547742855639309340473695787468318826321565267823410644206627956252454024566205204887551578147375814446268036206280081568308580193842667277590379330821352352191779448913148711977287536278550556272414905459486169269364762397737819034733137149880879146211159904167521904208962506420044301907583119361545526320246685699928105016878099741084015810488823604276381285505104743959767010774307783938828674937429291742855596897984092975158744366680447332614185322735548897882463264636825817774671027963793074751510939004050383353645954567373074105255875264474122577195625887883982928428114148755297016918712721523374858224568659769277057595107831915190356312673311433496461328327825710384697159347596587940565994755663556599064520792564367068816254338742126097777358566339122221858049200603399600822198754083230336726898496695113444901113835869689164315732160880180243682212956389705859705171220497741900942356874550326874088148184188256634263059048078130799391989056712205713752309156448879655711642847821654244396260665852896881289188272358532768811255884268557036205883630966322759407927152288405994609064637630020717874590042533068318370152568005106053256916792816740123405401611784787114857262634692299301722710664217708406207010311650355003818999590486137740477283676107706406530102547918495832747906212803477020559945141275584081508462757367975650078349810386409392191020148753469383772732590671599436956506643472226922337538823789417811058163183248121889902181326533631073061997015470635832425854876108122563453870067992222177384447477446214872178749055795939319415617832175807247094800731761189024306393600711688471030398818866377224351015871530440696833837761095692149260162719473248669619020862238556450901517230685181969252527129711779381938674887189965363885803375734832040287260408216254362917119267015649033671119659424481348624871892761337049124604160228895256808598452904349826519688824781952378086463060488590446781136007508080290707953732361746542478806131831371531979157366128024868486903881320223783209068814249542477805282200878736445830907601039447831489382633705312883926041034966438579601799330772201138039797408440577097011431913105008342396692129088627570325752753986978797153735088927444694209042315391599643870885284018487706802411208220286120718194161432052228928066659209403028030796907498296982288883103907321955634235226774170144835446957987824075526828276810700618998808581200448445749039854125191449152289404315114999234878662888462980802114905670372234190638238713197741788324702781979563326788407604132996915460882321825302515113386330018378515397144928802808035326746237285499960776062538561740994596994853313373032634351942151588139095335236889686457296748820476802814290278838614602950665098261614216396370804308746619240101224965057395329026776618739125055949181492929703282437129973303394071297794474929730190691975380692520538140579496529948864611056746491654137410418321269741697808331465685638735045922115601756694294529508116225300967446050511999028495123542775515425978508642336612429393096996027616143725384127290144605963250359753605832951130970835114957856686208635787783290646961451026580110501998924503813960201668009387132942788708133660158548048455331180589460527650134160152494594397563899315150101802678361148910580770329589995888288402304056669168280020830679874649664764273191770865680101180309700347103985422613105005790871290264319403329478163181867846311505874801239941802797552080046121821203468500711546392890438329462837981286189942587510277502860588107337090871772872468895358655915297288458732458588662213940338498131682202174973156496096216431364984173299611848651473483122269825727032201240973000600492111768801595347321688893393995653586554351652974893860167113848963644042678345526326333129558055645395647043333337305561865237939376595626042961598721466760177864262783676382400165167262032917077731476157690110487349843247171424230370352229477445224934440772544176533600989114829087268412567787153583635573459929646539080096101954987194420394544529572473488885688332653253879779166805972650798096129405002298436485556689242639231098260202727038964526268265137732986007572690899799206149883753908574332052030663766700961925900620698048324589939428408291509711275203841326737180588951847158974437356529515205117101234021711512091227864554390486351284045582198663909733329709323216337609357626488844048895483250388471308975079368822351807989301264464295379947462142290768587245777874637427170105727359140050427526194352323611556664178701193075984175483605967119102416478364064253580583590439105451186955511855244176828407890311018934028149708544833802147044594238643273656369229622577841962104209418434972446954593592049114814561687962563605526739247355876049213766589680974282893576986982875188969922597649703448590692988355973141280795797019207295142235060590054522252593877719068618351050449733754721452384785347034635754761366603951869481932673273793727276086454959679192833671158368189420757903047602804675806557601556694044206914228065595160205695989155162467669551399694129032070278622342924175626876198501314375208148206034192866147143312601958835581241402081966558362489978256230656905489921353261385974046450483253627623431893871870525019719988493848542451570793711182343765532793233530200661324212239028102088383671380011401414676800190325883190880238541482779777582067255589025274483684358037651945597506867506545568120077662037900920932482128679013827596730078298343447601651953197108324084571629496574850088472200656959804098982154819208466370826743676973524163840028794913520397823717569544213956070397997823178608146687860111225716033589720964895272923588466838795731115752139776350951547123455151998194211894577328996724780524960567655740143629617874783380604509189514331834255173829348220987981775395007710893243298845439791508857100220279069941937917373037450018338275741807295174202670997299115293261650028582587485264827981612878393717467280106854140429399810725186893951260314304099865916062205684827604579943327426438236998806196474143143242573127772810059911506196911654454742096069582599501129259196577138693476966633013070714303427687992392173382826128612656375339736154265393261108773424809126041765568596228636030619202446289468824310769088412402293268640825639366461552925109586247838807616995160073481219072820907707770022694120248301442048504948403747648860891471598016089930274965385117321867476349173577112820698154747220342793712965169206743769938234742316687481510172796191788015285479386929698291217666905427737580510986400679144923409870553140063533682249641009962316207076882978170728711857312688880342731277078023749020581339778088089259673756476197045298943158916622398861699668134067706696984306157311492839766779530810156158490607289409825933363716461169258157228156970040053646889107818950814076809238462124020820262948807962725692134942335524928255951608368460529100071222783072653471288317126387028483368626418012061551036030197797105508438472294730470632646296118291471892717694416661233808735172994334037526357252546233354490904324448159057611295799988983628540969055355891781739068349630861472467679481824215703617975367487247525894489117426039728813084324991669629242091527527680748175350328782187405239350133861402025273225380594420679762248451638569489023239655262468647828857312481230294952421851899584913463190610165937767839734661593397657374024508412471471508177817948187678097203811131656738676200218119767379024181818543349499203261211841102049818632029984072324037579109434692695225897374774730632052438380759031362475292084737581741278526449736026186185421612999275491641770721242041728812929119882904369323767040776391959770971715852016243841139729913058559800237186029665498505124538255892188598056777379517683723062827211505903620529058847849364831142061622893830695988499031602004450675971804283028298445818430717930671246071190544078349021583153448733445046621355474388738075537366724748820257178301303975756728408821150525581590897346187437339103252915293274008911454022115980536822637461843486536793938451040104945813481151235391657270842354119362790447651961579697221643146411495484625596305572074444598729405496271848155695205359063195079821715682891719537435204716396240474243921281051937178995292618163610061916514342346100909235854826885231372757877042838912714086552291943796761155142004374958268359238669367295144402952964609411841306373377264531448476586669754016601285773219167501083839872043223772558765742580095756413392445313012800212304005030795426331835796751349747650514218559304242134524302590668784115123030695033877909616277947189338465213060127899424477419952521002140548521921838401474993714498522614024348799826774765590448546774795883390161441848745916297170306735892676675212831355136327452419299685662631375884566565670679422778436424088112300316739059071618202086268451799242547326858791480750310110728553822314145070269712905414381036098287241635799237942314989544425757440412943134640680979234747576873791423373560642120030353331415280667806998841619890324258172292786290962904532044275270807163667196213971430727107451847000519519822015954186946708207851727319679682119017720685238719557671212440586034530412747466668432699743331512368235082733513505161312186008559396801322142509792559191476873297469539102568585386520812178178543121591605915720249643888573627870829083515626271337088933146173836747486732707183799258549040794047520455680172818600923224791555560134207670195851546709332139532914123771873004671884358348689333408854805840423279666681597099369899646822971987321119477012803987346438229933435815344928506466794034022779812361236187017540456107355519559641415250445707869914657697858032368294733058510721683103513785688559789078438710779815324531811780859775755712064668601938594569771462686544835006625656299716217135428587089856088537964272574796955347968366610122431937875830910381237743162234620290218244048481126993000636449329863197239212824635054588127177623259773282372325673885959324570436963495847994492480762297314687510825930019118619392183936639886707000324339674628425778191697426266744872873346085919223167594625824666803641330113564266789997996843951755824404828648764732410737643688029022736659655391958545146769834647405241823251336476692017188159246295745141821420614661334714111597426496625840047323938031167810236016161317773507032876197647774914494506828818729146761912589675227318173006633320533777609981920165929989773029611950833516230921990711449266838844168093354219785172262081369588876570787335730992353403625983500771432799713309745121622729027252995034760240679883020048326700901191624955702189553683308783140008781694912111233387127136007845778650335666152896758777416983570368894767739068696455667173989954624580063472596670258705631420857374764722462947233768086445476655039015351523285285498038701230703823230861290689166603542939877201869236136535470340752219611654175775656604963490181482110086998852406260227228677504716865034221033106603211114425348984989684925649698199206570332890530953947518715270131878853780099276554508679157762032039557177483452709886807279227697915140125452887396916354100601716937166248002305579243245885161635593196457478071247357218393253777372022664427763595700998259032029165966158558918659376818934256912277580221393911688722312945115272475188372766655737553855303502741387365876816780975344359746078922491111433736156947208338198243035458466639446071154024547320240466562677954855299689551111787261155234893144866599696839267672795124865214083925505288935123706974260864932275262385107528441245896697425059594367622419410165153095090812280694419559260204343938298359683132701773072802099607318012213478417629592533811850646950746416050339029113186418720962541231118836199028948976499969177385208975396374263426089193116967315584975467628193728937551842940384458314422303154534486171367769476660931045631395772462650249214395005923548780545644822970656172536502733646694413868402098895553677665580673368704833615926785626090369628900856322095860068490396775878634001427762928875710590834691405693107490204025907014606512594162175322671428756125901624427518049235790535729440531604550046700558985859414147078583878749001215587838126620899493275128243909676367298725642638327860574117636878296811304992831233662833350783197801842401054545907982191100936655733756072225361627881938668983034380972007121116666792998597158173893952460152566464938074541532890478072414350037052024741181765781168785327288020605133401259519731212532502639867825727754814568759648789662758009845532972743708653561692675439270525833138898168918539597745485170472555371023134697861827446364858284331513936460839864918012726748267584450878943801932229505956075679568786005748909758377294677273986675972429074874778104999255373614188431650049437664741530346968204677947811681341316398606710250442619429741388869265875679385081082162099114536367287497051693734983026380026129477212032898865100240489030377376492714987154500452641314037714601164530641028517218051481080815156054993642529471977258601150964149336501724402398346787299797628823812153593686720997765134831746066427556972453795943697131058313814258524837651171685890224536641030139582749851506180272137222489127118753684833496997198860596167346577353918266241043262004661623744596554041182214060203200258978627873568371490536211288849081570912433290864505419933050827438372758336235474647334340566137850366199415601225288947255446809149530616801630823184698738002850074693999844472537690598959671413690334544831374426528881327721728423181010472362774729282175027382720307729080090680545254336353744662248656761127609341950742797044007165461414892311398767373764902668036430216020554434171563862998534488137917594065322847763692918156241444981967211352380550571880599453559524883768196410790384263101880810487567037729900861997632306990102978903087494155648339040226217812800011140461718295205209765885653715283914802518975240097177698805170480902649261290537840222766618623215995577782968834881500522371993963454805493627363897590595500032648434306135698064272562170233528114187468162521306791426334042638171984576497596254468836299175919938288926627640318343224703328284537446964120659182575046814888546108999474167709587218791948456730462915634124920312838740405725750113249440078602150892851681631049600500319167442640582772078218294635871551194764793596946651992446408587893940445228156604030273739797648049371931816129358502279505092117943744909910709440149810023429937940144475135924027042636460671657198095859154001099433014284421624213124605040674971211766752336363905787929110769582108748282261073622792476804262310716008883980879986719179021191216054415121074875045634460579799407542506221096178848328515987004999453930792585005121099623099308823145267399620631621517849998932759108430177905061411776992699404431474319306915173357493768517078699670143577858412817445662425504822580990710866064317394489131835927546815141768292172867289710327832605857628869863709777489876620137224395687439108941692370381350354634668374915911081223299556150230158493834515658665028549251881115046450906761081735075831541193122837189295078793134299690817009929405438388965753736423576125569493925061230752597809413108850588389509849906917909975219292957009388621392806931852064095273381909361158032389580953041796483545497174839729653416657096047497337646045251315755575154408317939481982684886207628135211558400384525900794517440394357590133237532974980315505326091383533365631686104059834644913794732778039163863325780463141617511786817636188750432138951770740912425053812194996555380999816515332263343281125050233251704441139120570726742213526495449880763078318579473830804370289144468522508967682275121485312752940540803245958000851309183488523315240609238865520243214339890222739047216828834380056038880063038789065474238501618546803932365609206283346457497148146848931758133844260125204120715805287585423039881357282013437309101505807696059534629321322502347866733364378677655611190524911083135553286442935766537717083869578783548222196114839533996205298852041252663563854006552893472369535556178912655226025044436931101562649795905948699201677994086705272707130014395450875274913803184945485310593950896625716029539978272310691647801681361081567048247448858664914034148877030924244617743228745321967716837893349253369217626450699527585478292205180430081705850885295447412494307830782069127768786362086823734522850449016886951763745359758003489275412571012597582096172981616296325118767916994349391739991385816269890482870109898565103837556178960878436806139539331457776857716263784092902616652065850763524816407023897067140615657761937943470131175571325670378154458873251432429283370851187705728382540451284387838386945760314484164432039766769272567218858179107722163661607587097953783268085999651527954810579537170586493951047910125189364555776200328935037731288490367785263540876183270726309852472035390376299309940231524305403368921980706152009598491570140703612911472682422237549178277974642716337876633689212112744710936706758640099410232885395380965805094945899609655401262232695598327378657272529552780826711172184591170223443949928857034020955410450995864604008055426369585921354271620132014715111212619600451738615032590304213948169809831434622859377979892556885929787686551410165259566347523892240564366099033858917260456271040736461762684412950017313355092663384089618890341530229837889564656438637045896608465474796899802586409890953389696152606391098809239924499435391189467796909008212291049402318780180453524979386737412512740576006768878406159840072110973914787267448137645821147878128450153499791172073556518998739390393757531745392139554191845186549603965299791715259114535020867210634286528067173500302856954607344695909703016524316311798633103531988010155014028199888619407891574534474312678976815531439705509727126143530789012914085515554822569305236665861763954653381541653550861472728307277002975900941675482496558052164798003156324608166464927220416260010909763157064300179908807384190358597941624417535863354819812915266375340001334195456116638682925485787512363694030108930556743690138924476973210543094678244720677026975058989384659558687619831871231935568878254022506350403140262007026017996111140414797488005325288424463041753222921730092416984996259067306245209895022014712834718858945916274859814886945172432549811037512949929848967138625490530905011043029142537750046351518549622185691540845591391129734366858138858158119504803442942530070938202080687844945594769123806717768691348276880728763172173455775942369940710934584099367518642139079919950849818806686241949660799704354084295236005523795475665552695445041779631204805589567636815527313070221102293955960835414976695723729674305360966238627933410063907511507568150034794354323791352083980635692363366373880932194122971273396584813172790886743808004049946292629253034055786657548226331617732592549137788754990576634493137091532560974419486142320515736625584922127948448623551319981911787025883763360212528669326065904471235742134508994000766201498673812454946614598018257631920284982934162762960108494758889250893030940172836268690251136576703835211577680622840215635415017737449940591655028999780719097295153547684007549952566064676631664088222225430190466176326563352703355292545162898976385736857125824893735143733087313524878463514661504460640479077194005681708905324807224832398390892898823394186603311699720555458462278959602369891725315938295743346070225065645349290102555121845511911966758708361621497672094824807063706221569501574861529315864058885750455416787977478648211101687634759315635191109564277672809643523519377337870755102735660848810176723021916770511184746745213550709618107046994330553216321299184353289174886889458859461747333601797873052778252111534409546918870723910827624660259463460032926576176937536154753864449575482389235146150414810215937750771692526616544467094927777524936950349402954352280644379103233272473242203671244911613847098766226221999057047584121783135420663482270299337504743876092894667085429456646186873514380004482067391497856303369430567942193519088375624105563882270228772402367819193620486461146146216436766431779773887795008674520533618014763904766179319528362662462509117913884332437384244777713095990132951801814770666943535225386392694908426315436665786166927010849047083370247801704090135634778803755337881249241828262748584287954110314372768578312087541789507931538851981099658426886774116496558157835116152953689826587011134898863292211267777108573954323105436453425939995240975740327141243271050129596834819105897781564955316650249443155244505706634066726741981435890810641607778876884054341795870282986709274991519043973832349965295151177376621080851711870350699967535983780995695241288602785439465284888689622301212448217927344578439588500527795418528654648825610722794666533573278329389112275065350790099798901080947988893926710643338742713225061882220434300227183249878372240889310320846636942498630880141766091769107682547677536832561049925435532672686001246874804946185072818808091825936499890323500322601912310698919243783899608578171415575493946030134849758298544591261650082607529962774466292169789821458232531792966534791839426449619050896763059115027399958317864468220353790717798379183057686126971123691169687417934094402202833152199463401122369827934905304624402526138407566893408788656198905112701687308171949320724572739655283843571149281752018409061018057756032248621175405234910026827931543850904295747844160879551568849127180891072530501284809665477130014933972144385624635417694337885458599744297872148707451260249193401658088832395710416788338626610756683089133111858769948361716781620679907167872431975862818931063549999210146364556943435856921319671574095293137087594504217277788289783457516755358147339001684662670321527211060197145303691612711611250839898274811026125577408860349827193154219478602115582820544558886765979150438141329186853082641181768194440802181686989094392362242018907029676510445841092843912762008243911596234703970923681783494675053991700476249435036365889844295133608991475151835003932556123797545407204822573009358039157989957483834688941790626453534516343191967138417134119244819206189620609168255828487760367052948643144571449216821969383586640349315507848944299295974503327748013289620405196267175682104246603902874080115333281483002703000485102989398341788192453370586584148421326102048886461122797201195920141298671342580704307457001404652772041661834922250546437119885726846513755718179356851937814636376543876395187750432628786987730673275653456689053809938745373464174830604950886642257264294537310523595314777772006070608830164458121131828121945932015756366635826087377428849308222705459675673221907061170473075014124631546092286570544274597763102282459313318721881374608476999324783251284620315278234086252621073612728228099228098727716196379490357836860891182623329996762611689405531077856840022707586053410989652749548258720234909006932661337542538518009394746235070980293944832447700931195857220814226402789796174559074682652043934481264026243382711148767690743184116917963254150491575702072323434896522048385197699356345590157824729799571143800991348832983174086538810752634022495547688046521220727714699110875893913899117821389832688575245228848484387739945131872471935107330269677800569012161145072213456604688267096136852798622553151172760923980096290413388299984605787951747343525005878552053523651317479557439990715782690606140423153404287796832660752154356257917286746138457605716230707013733854756634211207983847834252060865951992297739850380784096980804229792752593030998658707440930207174308085424207737731741679500937665219308572529402893381645222507730583858972601079101360040782325007379211027207553992594217671714146304027275394351118213275092122005360290628588903418505486354812100445947127963490664062740499245594794969328949083305185251820971436162077286270859389246776695642745769998687284555818998636663582339635673650761634087303511457777351501746869733933526900838434088063376866515536931168995242336135172040813195878448471738966143308833748908154846942790459284887714993288372511737091374141110891432995130097463654953441108861664041255021343840911878979445975196156076768187446200821645071465466510676652472220286960671800789872569872562390432346111945669348057672082920705733362127369773083661145854922234475592842886384741604554951132651264833731042544473687273954694089105966431824036164051633082738122215337100850490311123382060755150971659024192170568556104114139163370912746446978823571300115590946710428412670148598080031007564471151265127978168541153256662193450163009133381006968529977219891934356405892309182314598639469529758501778827730179994965031792358332311386608852905462752413445756883038748497442035868453198721082518726661947714137555376564663772974738912888949916287442039553650490410574139226710987842815379442064109925053518389467316650790388074261873584344056823015653908910337000411162716559458712770985171528518581945166226585834578737146147038055439563041544201311250698447876514131148525244201526936814026097149347755080254058023409847697548655325129133290732372298117550039162201413810624574211920392741719612592539670500181336532568416706981367818144439464862864451379780746474830093359616445552864238419797379004543956739780123754258759419772845473162882014771928969513221153074219012247090357976646098301240896637664598877285030515714388060462207205947980347379492905403743004679430549319698172860577589663226599158219412135606959726418046628509148179876692713493155650905472795439211332689015059031482511294118917862118510665158414400777794975552573546838279862217928170402031269798183327397352204251045087775464812398313442802650886296081688656628198408213902786780428459502674743389035573462837001404627959665874663078089427221620922190937079488401785737011196464635934309300571968540586699081620429806555150938252825097828070235472153136360161690824196736629199639972764442828672074208268904817872019546311945827312883860656780921609168481864033196767263182873384385556530565503895630303979725943620722616920652603254726324267054633853267701480570459961215307093218355845570995278824571040117354393247163140712045279535175548112694991944709412828771648728173353538143284146870750808307759133195967646998994789779197098606552401639044723825892582854054189632484587488059224325124086797306895338026875353653954859589087778047127878318684022433556104050640071867736026365817494048198581095220470447899346759611476389852735576739102150302953080221901038949270831384303607273241214312990286892360103259081941687635202125720896663748142286797208727158052663680660215680292680390103374409825241497867869027289772810104071136727194888913801465707807557846950667199609084225878270871588849028122375663045836967991579683021579226849559762291029195008008925691012792842244053410112755342663120942853643077018141144921837127002549158890982191148521473081559108971050539014978533324382824713290566496964069446355721664807523057817535115467865115099037638463327702939793683135664405275567284757371041874150453063657466536563872331369553538483451662018605440837798225317787434890192704721754967226491668027921078030496883105513969913423039100049594297570713834104631446432812280521056023841211104085544908074862046615667672405826014098282465770506997050857107862005302416343389274503991860238419004559063500252783391092516328316033699817388974061201776139925866642071037709489486027532482263309538725100785602223218110383172471180380632427907073127004088920014998804701219515887146121611743962086348998722888535062923061224315218004002028415729925756926572674288574316356102512947438298707148635814182616748680185202895718191236808071832907119743155351035657978130783842382648688989159070412782958349648632444298059498610819738075211089902411996661325353038013204315876573993078041531362598414040177773789107462306852190685780231469563481948565514879288291671956472406358994725006129395068821091340724234078800362777365107663224159954615844808565733100525351436741399837450180808909855054304465560160433235669913810952839373139357364154118073072675550701039376469677336284698084644838136673962568590934880611006136547697422393192186396802393010198254352366887888268405023908819389896747144546925600673872055709040413617811874819347708100127356523162044675860700213014866512813165790346817983760232385028595210319996263686095146152671230186122869799745491563526570284771334337776967718774404405205298761521453918715732988451268601573129603720094685761713875913498045509526641498781318763195743129493431138352892068233148413275464439436463016114510789408327609187172529048917310136963881790267656081796997789493503464168360125846133937827296742588981422959422564959948775023920668841936952301561251245777518979159782500030023072089362662910644332655199303797815193844002023276798725079368463976895913213993720735397911754305737528850868321070727928929097100475448501031834797145310418621415480388200818309889024953590003090011964849979312382774154738737372731899487070897066537290724936468434210377892400493798679671240616050524800665756825434662169496559531049514020092256221611567693479204253622825452171343858398165312059279670311730212742339533153968168537488384516482879689832031505020154966477788386381636163453784903451451076075138103956310184142654795025851562026197815690758503066363537101367732058164068325580587283043043134591065836197916523356418436069372564846557400563789275534202427827610775543789001444442257105623649385754800085750892398186008724297773552034573263887821999432058023608597130393046052412601003843999070769384862522453544367879204706458060971305221028436979543079575719993456938026875698284713751597916848029562869937826119327658487695884131205784286214628895928006437438772691194752363670181204863552470020275499634682724281524340258974679910465744460232153187799730254495947671536953622132281118658172734448090505327332147621983012360814967201467169167504191962992874567347217300818275501501609280539293020340877665964794111586593552073265027505830277401923609912126111357792575718529383315720972274312145670235326202027024003309580275354392809077497433444585611806547126676287837154033284465397577163836763989697699117403446754427346392156536532258521512163120977727027641631323280761386499352410037623512757903242839628983564808253355780891667745963010879475711458855844926221207544278232650046223907111319393790330279072008672475945477252195591085622384097668913935979607000277530756023931453238897149440834198028653281874935616412109395450275230149307321814210882932241721879161068806257312032748779915334748380624937511906602430391789502711276109955335451859912091941709640659910526996774937548326930480609905776335936047644747467118527550005196905363680088020681396657014626608056173240297632926885631834535896438540194032881178420786399278449796923644450407460977886281950436794725613068786291788198395654685526995429495431351097544434329982746757701862645779239315453998518657167697008730141012738573296059334257577213846171998068978188420363787185570905121648835847603115793789228533031285306443471553387597216198804828411046816599039846892628131242425736701455311326303248205686223176362579092925421794810367733805378143798530885610503656520124574547888426183175706595878863993676256118990428462993874626075123499307597343140371294394433638553769391631998138578455806604914193483495489346678092064512523299362690010362978820125581547697685550883539724718882707562903463397738071633085963588061487429978214410226841614628097708257257818448918412932517964817326116534709286513602942033659366640244647139422610011008460469692139774690725816836876907687799317010851612572166379024891088838026721357436591735512137574045267164140907329086967151669127652329847605421514950192136374111408255510481001042030903590893826502859894959976717920009035609834491763393888848599224079186906194424334370071215426493180919243162640663694955081617260069792605252960149944527587840142926289302348962261155332456227182105131374179966249555365008606299162774833376436689389449068354696606712780545126582789341696812983466689659859627317219025602754478392239180481324777508654890528300609579095195168926773251382182332509386346897236336122833185399680306313153586568535444179737556816837220243349273157780921205415936809008093186970268941317181471730158597566328273323651727564849667629883122351292391645695353268907820239954449819460403038644796206979315606521664201625454171114415364922184611694072540480719748834668431673204663911285405728264723095835147618723466457979553268791609369918706742326015689650185003692452621828113365678102747948868090089854058208203005621782754906010419874602233685902965634307837925226880181709456356152635439769398994150903379509412967668405527391421560485057359932494303990068207762365305508676219230622560865079737333096028153634873892686903214870001858284935508892014181185151688472557828939474910070452540392146115114181584731566460756986875997299543546327358427573931018410987702389676587817319183974262628942128881986387030928167877772919612572661229471829380599589636761504251479788891651546754315208571553793182412255582247600627275550322981540069447125405719433018488669934888640062099231305593239265073796741667578488525713360255360907629991177815353895433679551346593522266614465785353257687808310794685473146940955808317112729621962710877323441843451752165437819593978609483021523884052738790903560555491968247139773986745514956563313444943971690111881076615556810713390354753319585481158117241181020894420290407388063843475535525739350003549287495360844865875246480342097612002389778956351140095046623966598101154129197270460231505763739555040714046418147885763769998554390384362763624686059905084003271232350270313390351842489743236727917572620397703415303008790327370451177349882511832067527050997522826791144569278184309115585177947861516926455229421738388394183150699821174846182461981532094638774358222082922572323984268252076664946306076812352626683712230773806768356032513315672756084123394889089713482842153499069723966564082451659467496870394760877223170231445836114942488961824653778680061839280974419066088277227967092414023649082234101549464819676623902530714664759033659611819172027728315429100099222001932874054081498525912107320101637711979605235087026299679562825903106460845967189358469804925893759876314105241915332932878739435350939147727769837200677619743298976454864659162497097821887348337609152011890277977073090140242197671804295814573837588526351713441793113233862415918076165420691858450185893701130632567420678262098711784863292189246582929749614401121748022337636053529920478300349556350794706776841638317575193383013035876359777224063436336400734645564297978464252258517079902344035917822102682236981660630276721088134685352640168272034251425807915427320449075630646595156195498863431940699247729485456163153460505785385478641738715531866520378096373456707073296729327074207334322749135946641302677760936064481507797828559910373938566389145022045805078135965848255418570522275785730882256849785518376678786780310486243665619344353879966214161742217339985052285269579827163647375748334060625457195989699156986021178016130338123817683764969397410773626865114548812168751172570270134658134988657103099846807762660900831546820014967462842375621011867134971728185986855085642529893845281439132109246786055995556913115838490189844926508508109489758538188322824605453373692638556142772077355660043459846336762429182203975728419796510672384804306445805058041815151846954089620650526626021083550439118920791170428304874078189356112151581778297930689916440752958106450335750299750933653369573045800667224574281969792656131381340583556387026668334351181293022745304667368318049110463124972415506462893509481941958331703796814813451808432770793949135294342877011190069145741514735117577161612082138320767684581639412056713575713624724052069556639977507756205404269536097116523840284926415163675288008773587730530469201781882040150905446635401029069247629962492557071625754483829008345552193899626073547286938521054707146671989931872884024119527831078186865436396685990122507841319443880407019054783381095311797730796571175990291669663652790697565806883906572513917262330317068805780970515075765499072635704088815921349680632864929125693098501618769344395654843061565432982561830637479840394372304807591640405718282812775596233291987812276635499816361871992844567122694638672754226562224827040671458593639789029401714968220711547459071221806281530020738829671999973286350821859636487654700674929429115510213138483711395281294614307656307479303259075147444529345225332384018788531077476872607345333742669111571932584681340190254205400276229429662333507497753121116002945836248516913285156610064587604744359887289168162264694395500567538497498275671906919466749492637035213065126335968240618822280814858986207323830408531915847512883000240309548637769611185856293113750516051039809622671826427336898105563189477828479472789753166094108037348770721164216730222364095998619965396504874440030625824486760131681724543987112743557739567211328698370457511134000351587427142188519012285806164495399197192885135032414462097994762610263955357716345366363655152469420794448221884876095786718678684450426682424947985402310884393765792560768311997176727478838193588212971520019849883917735663465923190410628623365511820357694478536084126060701131034213483482319916385897730268059712768131479358016219054056161914483414345012976963024042087851072454208022618614444603913438337057644079348107130896983173470761948748596306146876697089836121625289021748141890679895929389297320145024990614226744668080556695304804877376224353684974398138800064929899883392898830412557679063328459695884472657159532858307724613598438720691762018768753461339164018435630013639316722648880806740703734668395453995562302366883604205144647851366802511405233695680136968964330859935720508779860951626683751717275948204352260714084881847011976182437506436281743738783694610009742953635570110649342352531725057702889908307530543641297579368277228196965747145814497538100093678934093751234424408185981455543955236242326968868996085115798825378576280673808732367677430191905391655259440926450399095572647238092404062837198289405743356852244383349092673489450843783453834085940904434643057940007756223246785134033263339995862433880956333800058608237634223694857362831864375075624689016190061029725553735676756087316481856057907405149637121619953637196529772110519684801636856336917508325184796588136188557248436969427795071533159389962045413059791126766200269363956047450293377139986341456906683881977106163755785550031916599084658626464157940559365840899700894257728914825213806174630087616073882875546788803511091735409587846163675574832880385804602597167234504757695219171662746143616325537591030252672116809587372061067153681152446839789767748643014602900065096352177346203376162445149228423731807746454395580622552010232639452130835356401826537998664183548330173365959634577824575236329718324392277655520271249629998030428995716416317209404043263843861695670345858085753455540709140500874135521469982371443452826121613930549383599192567130758177392939672324688000707359698630119028292175455116227049303552567318473121712037325594803780534067049539666898106992831068181751829606710208153369699384496858687947370982539984049266048598832402954729043606318828243680176580943678714612554698172087003320870447007037197229065720148634014116575190988034555416982821883110706934394008642002177434562465090143935806283108086857228296474929730962851330070847617646960073604739033985897756809190136436433201324792966426250425083803368923688533159920499821597073695107490765066616865208201736634074395593528761224768624663488914914037552886269486794057901506411615801536871086112020349507162181696294151400495740153070987502372684136062808005689139120850465417129505034378641710069699933429415259720240725625591784861115443800361816366731224364158338396866272860092285342903373301436010724940444230585239126647552901997988854931029056614736347378465309465917453502097866793994292349117915363388000218116059124220487617340469718174357404854322127449380869935315887401751603837755774038362162221930962126411047172455206987257534242381005353540511014412703980539641323414595270347098029687462182026283151905483737705885215236886894221266303255875932888086800443013204301686862729942013938531469510999615686982397967026118588638208200389999281852067626677275330982490597643257072230815833634845507757872121082020158204198492916790793868311326323152706614382636723041897125137732419726385830982118334669094252376612672366901136880235993884360394909037980328479134736000868580721423524376021702157768726931768408056755533016975796080842688403320255961272769597304199237005265691905947980993899221308534239848178347560318660725689138601383782687004234347888406099383072840713770783559976588673603165334802520360683090702053826226070930737202845977260778371095777781867654039885140306079851417785784955745819861800106556966293594570282833947863808126488604641712361839566165182660758253591759107656540957937827658441929021874009796016723163891249340367363559806387503919278022766945743441180021711240356047284849997975513379440688864825278122858905043390697614984380804589150829446650904968490962119822326866290808915017006178268776702497216683213085104608574240179934742888275603465728266865490679617357927121587093681199455362878975078903102424551264252838971774084261139132013110017822582202652932092884205922135849981514711979263164097052186616655793877266892302543104773536076645251225575470049508792486819569256251901922287464693248785645019117074254419267934716580869439582839879753815828700112670059193613997932890817078324944774133716733868482902430546764269004664872427328857913197714820882847514112522024853707476334510050939999281098132434208285999081563539177552154892771395689822743586981787979880665029594783932031363045340837234950648386028618839419772161107035851218268129674287607557989328289506371000232966961459240224199184256371917595625638481407367176527027783707151254391590750092447204812766680210741857524026636172475163084743472507700222317941445631088043004638823589900561372183747787666253743323283277214128540556004066645595877856215307204635390898177165197165006211625371981309409905299672582285321316279139136015359932900008132894604348802107461110492881482450335936066458770034904928878616376167560162808495170333347457928108479686874171055482918900867104374691131183697420131399247320158951248998682410843735134566443483469391118641720811760118312977878161211732704910566700287316182352169329563424112465702914490238472531681433159982631395051371010641772756547423180191874828065448622277206423738501233940570674204996989567832850577166896224971592010850218155156850969482894469458112756747695206025196047624490649868502918186822894888610401140012801690107673272053425617999192166626822178060948243011527972779426922383194876505963507111399451015590020447768801873271679646491590135833022498230151574916231520393814990407498260169844469551791903739911128147093100003879150838563907611864514699180389123370934181804345101742688816713739440779504981897315915241372601419247099186879520309994370823749664962105591544883012875596894255821061193422211559155173294674727537685090304275788805023277587019495310333578399449075256122093215621131667417521042332835118494437343857707467071044253553165990932102663173037643265150128203556289903958123043108997057389428092051587619922269655095243446572158577396429781658621292404889899437320307183986800457449683969023159934068267235390876215040149625540945860337496689747050152152680872718103821205387582005953338636464424995598567045166664240273761225572065722555710340097435992153925868389944861233561739344224879199603325631553737648855616079100388056376379385901201376610402381942254236049878299580124090903364804507412596899566868013387154564112354418971909409369850523841059144574509815301913632942553047955397567056590966467725099457705464648489508767129271620241427205342946727194379864774793140157819012487239615758556339661808571705090387062131822285506739165097698273178522822004271078385057753518589568698513277873911171182000742604071809129402971874047010877253812249783041474179075435745786813468587473619348792414653311431755873315080674372357582975706337877075597942184091075564430531030736208514962019683592829141605222870831660022860669230176335346484423576787132987609804204417249123298224793059687340129805169082446849810040313103963014874208553691786220335356467962449189989752486760779252545211642590122189600235456962784954965169686594546613432167908548586989248694480591758841975310401492086481065612771530832636513794847547689903602449802100091037575790919328511853110825692734222245862220797387174871208553467350605338551060708106213461907861137894864589482632726767988254572300882659338780941279125276671274578595084049005729541127344842986828809713998090012251471134294502992732306965965388671010357204667155417398467700838952061700001629416043350263341885158059499139389655077361037255428491788752917603376442172543508949815574298807335102030765704526591349959259261755480059833824764457034801024588035193489958062824757206266335793206034116320656442464635132381689409748863502712360157390791731635320659165306267878968065470906930045867891055954634853193470709354446716470448245598263207165302204143883127983686832125206180362498101780803443323436633687076445898431037872676700342574116856736300399841698497676689492148352923212372892329161782768743199594977943021394213567697146919556653858410213511488621129849457992767713167280719051069128947146961967374128744634473045764918810982747062434971812247096566479833826539098093110551275104028604437462683312971987624107297967598817397051496738640496756475287264759125474910926123766888493232556272921725944185752106303165675202450680102217459359886108605628471276916490854386910376024327379861504077488564185939380346620613231569817891453681051408432028881004167315549095992603904475643498273372687821084835867558617100774119890943073737254291045944394821814408976128253452928723369692384883319606067421336506156311989285665733190334496867717963813253229051478797653619422459018743328237655109642018703726415210868217739548190534129146176541026049304689352074171760415092005937037751234936980977685622429348012214493227160526926550546687520873418765694956972451973216965151751077070406697384741102284838630528262340772260400765591752644277314259796865331117548012438514218006874884611208346787029515730361204872928310813487952155870776411117985609767440937390693866817661106229184009275150621969666174267208484350439198644976232140344991648102076001474177782224116714323725906557104255513921062684659434305865835503196618803656614329765070544405624723180887410087721529824624811239364914528221079414819996217047536878455681957567124939675318628877695022955387373217368737748771585349545991035294562027132604341566952379453505610791947152319739762117377325452387012603224546112585306917038807457225511380181155623621069610438883205064400555086900252329118256996039439270231586762665968197046201835834097336302428355528846296398145223879608433406124524526536164089406340542602053770391027273146196755176573042008134217776385695945026891101309057462945909374105827865197941883349478345078620859249218078871620568804784065172648029470511825512690760616476882532677535503002831863690685969525623097680864825790215384006021787024357113395810583054148482295728607821702495715833071826037878104424828193179955683150849231149005944564643259231184421454020193421550144153511932117539078967774464887377191213509749087016831441330548021108557458427653252781853120447698908461167619826338044335174217967752113770889944024688054288914758408282376472343985140338878191918379367704368325822534546091248660048011790308654982964381187810487712468720265978865798066896623277808715688231137912279503630873639396718251809687075590025874500105777031426498040301115848631999448502707861065298126704751495833491649576800372006941411021385646482473832240829334889615626900749331911082379964116751002778441538104732109010545582275124176307495857111703492550171781913049543240332176694950521157161017447975766667657432743497692835021620476538312064393730109093840338835928790002640194183957713167710288018437650558925517763819188839133973900166846529318718089798182190231277613145243369117732759465817369964716466223568888781256698418460329422620322390589684818139028222869869038915139686545048893434035949696280660136490901324606189963579364795181878955169122145700736159464573117757370579959206601733892686769171728741491840849313322471643913804882631406889871120259946918909979725508788706242614254262710555486499296969594379917245063862756146279126213732979283607548927593748202730500756462998481114437262275159832689602701833550909375033959498305400124603473358211290435283881270642576384852517899466463215002977492394307700726916090825596499890526245429754854787695366253823548572493245734365264544975606529411131062383246420653474831284258016503013490876683457984414338672771717124344544087468506604395629254799431588635935985739370227682932068848960941054548442513065968679436658097744280133767001761986937356614812880620520034898892357108409925090943274319758167994467637792008643449912230359984624960450039563448624404159977634428979763136077740614202315220164113404719445726772741546967675355151259231196241443364570123498018984035960108038516752376549223716607616642118530330395096070280711130805836751665090302548447517681531194285608925907714695538937343049680789507799807394229097389122510337205234596952212187571009349881399349655844700695097227396941027851422067937924481327843685275522547140575396552356181758546783356368845002778946751434014701517406298734582743302532790969401968482998802222765610616183720771704623266272059895938595807770730461383766944436328782956836042757289328133995637852282119870975869661526192854011080734364950659529928605075276807101899330393458966806214713169041626021777652053376337477632076935063269666167801935687526626745608830545303641368367737410428021771610215520755198811466445752993344565956401488371961810829267809120650510885699580065428281064176736778039257698410237915286830083166168391882035836650711395793703254207674075359100900736611198680819755725691973790820283060245701465002327535242907527379037877573373085026151810504505835577121781021112519240246229331640722788198429649308790087471094181138448973733691956670977734271169749745801517627829476708851824738703732116779694170912006945555073804861843866902383408573101839169808874881730502129941444075558114600331245551270556216961116941830411236809648398534814517772398809144076667057343018625023448061248472436611942719770670236862246320964655820039980488729441555132753833877407606325612703949810898153742543059325925524899471235327665802022112925229675473520764584578931026954389862320615633578993645164461099065526431388670026397188449111123883081253057091706207727424784103442570378158795971229897078465477420097265285443980391146013017958036486946740085391639017643780269109597084910182947432520923221753827736129153174669967540162601866824516029810834567289045235191408281989792921423089666733773057731327494160022959851834771347120374310923092176268154865185654901947800196669846630061235799828707912944063153836745980912885538554614965903215592602504788916676940834457049020658451367181082385335481476632448209186026266421144683150198075311855422406299141812917051638847263248510621738722877182078841155220528527732934877312153532550267574916832397543183490801341260312935343123112824985941428923745365074544933797160803645786533328817419058586513852229336180442860139027716382185424405330276301816441076671805102840652522706909455908769442475286153414691973884194069946944034296257482243881837879605354316347288861487419114704327530625064655720611751349234167954819171560597814414229145195281295921097556781440748338577515989951810271713593627926349202531088408883285443875198334722451398038515953253867439668447617636431455811828079158944089992788068066585379575790818106752891571095770261939124631432122033559364015308683327868218019678129674202588053289950132735628274096106017438734734336053323204791975724221247539457295739394107442850047322237639431259792279462982290830966053604337323518606016032314187281569434374054304138543189787971285405835197660548796257980434721933771507013373861579522450821244121365117000481467531637440603977801486250103949099609618801246793989759662444536044756798778101232505204369777235208103702363356459898738702618766154008025904280757409358747878335278879131415078059859345872226392355124251967050596222285025561352594343089969123053024137340628487661003668826977913880565441673797698400133568822478793422328051408970174270551928126628849794241539204535729238395662586300253412902428685573153776588483177360222397180089595166012916662302438695800945069225795956418833623238533946862165466160649045945886725913041164256909639497941859959438073223519624270283766681527239713158060772347594965122448365119670115348948845489577851413544055343688975420550208419020586970919179747117192504779155970828602568040171487185542781473913007579292843726244709052970592938869922953328674275270216860658391069382647391271676922599706990892366260280295219057296927675577955990755942982144422140346750798550636103063921100735568576226543396215972404930339357679851755171748159175561492787216189670679747581877648343679483799564788316446057647906221137471529096884345253658285850983651411976657764877469415477096325206392488492611258440516647955447375442436165815090365377937698574108675679706739043290133449436410117779301140776252954819093336469698876963496726302409257882884176339156244402488142747564378154631714016202701052160074218899259846300471838960917132637778774669577682191104700920179693437144185384622580811640373365163351339500252021839773078724931734612180471746919363318916677185812537243293646186730909738352607495250051098597616780293152013021228890317739919553025368716184339370383562702183428954954594161599995412989707231049934194204195889310770091787444703416341178834303088688477662626301917836219080627926706804400498896530734139974437151170544580621420495217792529760674070845706065626961288914779158387726562674770392286951032732296107867913850666675936289235937516496644693937245772614750327486542597937213855414266973706815265384557760590298524020218422159507615203465816677674333399262254706321773989429882677199910306334851500362954891734743603296522388221958537354158411266419901564012227706775775406282737421262263939862842015763206715782563870562578112483621311951913376520018544345512841888443144528604938641648465928313660911685873943161546314692808178555509723398520204019771467196363321558519419961446748048176936360033394278784644100904446284597015345980441242716130520288354831212802994618765667298509713119707190559345821981378598852033221338449839724815497125643419448747740219433686799140873645106016713765711791857618493827685018231888036652273442225664779175193963376695568223982751337963490316201556167572544612661704124860415526603152099331424812952291344489980920962024109554434696056565466939257870348894111624633670658479442428185344070448099032068396000543352382118703412779920625155278757255987055118493710791448608539936580966231905712707689240665396744505070045611606603731194277745322638963503941334316816750619675671555632950448706293958005974511199879892953935100879862234276606125025582204838896795381995727136910981626941358507879004151611766630245853285429133979423206240830119253446832496400991911116148988708395767933007591474627191073718834547978564591378356585777011811440263606871922385268398410388224949016573929386273830890236249086748614209058533628332912529069347157484954903218136232591168563423084264859251757376890841142286680608290919172992030477774216850872894699443978779614812917180941152072046809936694031099015969131104630597360879229845109200256689734670676346957962034704417482208956922225860281424775045455982340482017278345039062796359640670539046013213265218255843841078467445985436214643562422554701167652922627676883615148897785257749167981525430043423081358592349349271572638834229175487641609283488579304110304439712722006656438554382913541076278827959686850670428708244800720791242925187918728022559096076896580702389131089947351218372507274929694488983075299502497555654471889036748155850439065367857059801581648208282002885984412814935536769776385897659965016719517991801549908276513933342684449093476304666387096882269475170644971177965438657971033674082153806564903847612595822194437186918069937812775178662079149228295305577881432297472883134828455116225820030493386527837121727528882246017146183336116533504447066859862293493703332771080229555303872565380060111596173812955064680381333053031198490167894071854239803765248910378864495503050373780487367301499019903823114432306374892323779947677361301336554673113065531642194418700853307256301096670570131769831440801279895765684963579259026689794222582629226330720506198500561519319956732104542917077992739798292607541229529335583605962415632365231936308478472440672485054895674864803318336506391953498129795101137099217566359976763242157326625406795255649501632620711739566051750868118922578906490477203955046196389921826494842188818846811341062094867571256239213112294935003355066403331468712385321201393776344618171070942334864636132074772174518704512519995938797685663739258090122982982893719303203977313690579532382526238150143909861311698789152923112737914083349381495548052197257874375815975883276525746480145370340593189969068048056462513159011407024870338526993366425469948433821698809073961972021010108843480075151486248985677004769702529181904416896554318391971339477119765957807168755388195495716778155470670296977022523541553891604780413315354128603785607213505002989522206767676378794802609980468737702250330978685368479690646333289783613015549472296631090921498077667979118580942868357054087959028297437458362539182395311492006673327542861971357617396352067718542439103662530834744949660756760183658908235051610815579822251631650353196317482074693999628353094173575766747149889847556316359939285604708144510098408424631658452348325005509559174520761804508766853040382726934997283641975829536230593612629033965667469157673723651449652119510742979414826809019671968224216513685273202074739570512825125889179460228287731476854321979192739739473170635059347878289879285027402572480732469341473132353229016701468698507178747088633755043648835492584164437611633574499153136518056980130593542532111994192844710714367630838928181156222550139745913393723090262815190533641213198095008435369003906997426901776997211273340388528005880262439214705778990637438912905753875488553986371681500728734268946092360761135466415392892434017991364896877431636214820308632444577148896153228964707746383907499877122735712292141591938609846435011624002509893862807662352322742438571667107560645452037789525600406149061925980005150401693519663088954134433595539770112647554115166746183407115821274258200976179735365061435982092949602592896822875973845833334571817271163577834679693562645450628095540645726830780562658911484470017914265075935957549328903260977645476454211509411810660662625953767976144091640942140305126948863451280535895227174333982640109731951349844536924300298302007729692538222538237731317594201673579575756165221662625368656329761174131783326616398738741119570250056365713600022365696004763605449959265795225891565072618142776412430182234488764801992285302682191741287222458807293932763542264508074326455344408684193815256473812089815334238313009279007895688321368127921105912951973815738677904713857801127702343613687028268119785102125360886018680633604495672383410776179776416569651105074078583385093899096809488049578698899510825957972534186628856417407842283344143703124773443292256724962897971072097230784403733033881559982441281876321778566391676537927949037887773007318010549185965240796223558078513599827806098543686055503296742137522603122137247027083384160553671735194054686005602919609461799507374855959537792322679792740400944871664309826747319634162263735442318471156065490851828530360928762503492744985315362187502963716087118476365612404406586493631799833741258336395321238979908496499069877283122107131050644862597408046933138637500351194299904414619335345620384386428578019597279230014066645930250831552302120993939234899244151734160989042981034647026732498504362042966852969599771598862699601476340682731217185003330232618255210151735006228524707047869739183968978164480083715004640213670922340366836625377690158227992833222574657731377760155306679073418022678942196012041425080139373445589341379022273030576071213677129409789433387855779973463424283247903946474973544794303495893940594537578523254837925188951005250132650427669240324562247327045870120320501268694429935335397665573072655937302306648587720004685151038582439582044662559890349858196514744719837129738534740684422440559866037833402144075311774708500822428800086016289941707511974434562200252399478504958016991480893462332357674677767917370553919563467175231922890147738175688081585978998961638417120854545640302887028937722366755408768333239814413491763892311635358167294182635939754772384707669952292317060882051607394485959129505557830129249032851322983966983699041929875248356869330071267376830589090958422040416021821432889186425885213720301387613863903774339602605719763287201301824338176111059438750534608691845559204457438293421629178115843183861625481876570817504956477019122905229945116324449492574568800444625587728687326835496756851523617727803843138465181795384260744226150570578657792584590525848587630061596496707005547824277094837955948772912012573028201619145649958415018092009422552369601853450304773770960343688460634165712886498205069219801792105345588018834770453209319295672397100780479106304394599513102914201627130652518786643419580588231662210158932962724339305907317869597927680978779954890263180231539880638418012496261827160295783298556261640658077155432079867742282423270272586178437111190327049233702502715057760914443675062843177609366934612880561072627728389794229049403157848540739026543627740263320469299072443261212079922732660488706920263738605716424515294737642042749328317446922097826863147059936166321277933317325026044386723735004389798552534129464973341715073088759933215346017447976011017402731004224586447081905182944952564735765469963508320780079006982709889583893265362668464032857420276651377169012531469990840175550452473174551751861479026530559679119842198806817446690738239155899655031011647696449278038026592958632986307579154506610959318762345255840709849284366079692991387882348666816927190873677407554201610964384167130038056273069293727180264425588345813242981328821025573691616907610600165034181325652002600090519789765806248609971354959651059986827682700899847162831414908867951287730457514857317927151893320552731009864114805170480433635054913497332532204629011153633006081133263953750064836212140069151275566996408199932998891607024364148330150941905344895817845410021833949688446701369952276417728041387238951515080563808195660584446229036865205774210843763540445641744617753876474300564689826169978004524966866019193543914954758431746004646840240210099566924098976145620520923066910843784703103545584596902359590903080893824384912950309278714166649177415789879765497940334967341889780663800496345481242171804323800636497630148301572798844370126774908352299268523331710556973348379037384949568507336416224710337778852087955164216486474797796679505210319391926274804962726270587703215028802382166929269274173042155762192436316412874728280705452645147914730017468520190547080271017596459874347876867714510977249940044705393500284336558008219279955790373510346925200427921138722752073131858010444653018082780269711947339887377563099153435002216707650000056125406785675197030332826775874462950350944812985595794044614354562681251037880431513881337049163193599342197344184588338612583443836610961257625579016117872042763734431469441496040148509822201489670990084890682456660445499489901103472220510548794758025692710937765046466513693161881490098435331316707374731589887527538440029284746434766364120444743239100156280520548925741236834287558410395644776257065792526961299604381415452842173133549193317203769949349090218705223194478187641776895688170546057261392349237983298125813541925881187340212658110835142380946129114028756684690609169268361265297655347612500566973990253243387967458336437537246516059778548982534377730716006711973054558934795119511809902116441934965803775804671756055309154121256271475945360824261182099744874045454686535194931499109728515412424663757508836601016664851959158122762240333412146696785678713205691429232469306176673909392726903697753940299474081787588534339103351625802172614837452806154568548958190638112729792923787119008224358902751154737995342907417976902720435103534377376579129448679354719500654021994937204488754223422148804662819754649192334731574810043128292542880281282095912813441984909639387610894202922517753317710844478974545348300272142392523392300788671555838549181257917623296737269859051849265349487899146002803463556243686640053304337781710345432273592444607250959797797283427713031605239332249040405502598741211943769916060652809671033931094251791218425222803006631113279071303392532005753193420416534996343163954827315765433138823309309810085276680714661106165043784428687933654335203485727890306860998559763079130398990639656447905763563957217599955726765512351864732010527294746792004771047051651877484128837538702074381865217272078177722955642249861472193303948252408672665277558281332180937803989325881325591940468799980081064996905634122488435565332804204406218156226184040954973931368242173749295613047165618916338874816131418180832667918922735914616581626234813096346478139739442288839509471465341851558082524242268656962325375384472457419934758514866352942667372019393531842949042469851180288861156307492765525272517389645209390859508058394314724213507706338760501980183899568344231734015739428107130917185742920634273037923965562139018681327778553637078659253060222810692176530806243159183666612857048510211255034000824839446049946164113149243827769192439223898262690929334663194337633161202659009220282320197916535812539671790064876032208926941392739119489465192345587729550748093527494676360661609612922158967349709338482064294505441615357309732463863059178097964155095151275136665730714018433626154976640611242367770840786036284275043581055128820184306166554571630328298483449014107597180216152770688830072758341349770644806487357015609263032405900917764242860412268670751294932725163347790892474235068810342670909595954147409973741396840462169638511039902530517722833005364820243738662060207427008773109815188194360227970914702430866961847294995646768028050080949438310089625800985436357508108939128224648557078465856253431500075464307621569733460731596739146982173813061710552226875672394456240557504195882152925109145003191760960235936276882043492171237044614743821366306660241303924964282741414811279903574385507124492255863995258146277293529046366313616080271483780837457430789643591403958666775289640586064040130654025210720906706721551382701918905454943287452550994215714472369266604135291758268647651816023258536050185379475459273975330300730113243070871239384127542754161377791290845889995876350117816938801313519618574201719980158908875283834402873920975341221099128926375950800897261804236302635550279280747916506555311372815904543994188716313519650363137005431651464402637797201082968618185060293748495678096401758063921721412738322166026366529066654478100801711997988144170896320834778596229306819715806119082059291346498079969487479602074047915261503260292700079899523447904614415633193942509320827750336528798853237788689356099340107942339679756561643766321908848826431869759944807123864421613901061307423480743956853467968781012382589931580552227337421286639133404124499214814650361768109066775094974853498362012043580472141161861395565455732895903155309269553307421510065107639850569252206302770004580176034279046090755589242756815608566070239261955808420636551227374926983309503830125606301755530599857719144434745425411555559625329487861064833742904886731935451320475747239004835397524514023670145693113119929145740661781668108268112546998721085814083152256588585818912864864399372417916127563978027042945070091718658652386632008470116543877415698764629523171658654077367584514043678443124891234308895984226650527855478138198208396386760281389572479094462691506239058417166137802956739586745695383685982915105819011509846967864580145039571956531129784966274126822321595220755056166155738953615279043933786670879140396322939184816650665472931759891745267439492483970485993677239689445431663577121672275296472219411178464021482641677494218468606223259434411105478264862006733574620762185425141899869496300987064910740768363188014369179003747548599456045697368339504523732106813694506709197857729185356654140239502497086641018985735912587512662321566441293248578657050928573651409631465486061519476259156145106447861735431938095826980813243715229997593297232710318469579979920395238895538729099261979996152778790580237000988255745617967396546615294614136011864477309649508625594284538613438250474005978428772318913804631405058567882833943702718097115795534877637062628154258747133160916218621634106040075204696500889615139004547234368308842887607775710869607448458908936935249358277638020716075629209425002737306462873231734422522633786726991975491414399619679849104675112355706105225875576830205234915443781163357845960112818512356906380042103904764434569136343532974675136950396221824815971346154523481769661765635292522062665182323202035872291334634232897607268494258051406807544814995459787672933417827776052889217950925342813662971353807405396646606699019625453462152301926136876458554596323785952728595169405583627300296340038317423574424342616046871202679019341835165321203143521985882796654819365222349082148018245946383704867179852903643835656086118056389176895541925068105888909474822630556061734867163291016945922896380316425598686276467716960385072575875162990336454052574707810697588252299097750410132785277238192254394765412574595507277583249162772178278016720020553282504200485305627942392891731981500268684274428680265734600328556641979252906286830292640907721786406726024702267404261159155689770385667019434529370895086378549654950804652003807047870259335903632886620414676624010945869346045607811429328593100398520273919477739596268263044956249989521292159385383695011912363677915950792128814660185455447665240937512454823801159441450891957271653019263437088177354333855460520999690816571647752111223023899492595285398965977357400543051613248791439588768718767962551840999078863411877095749615756200713860022017651420649098113224643985109894248646433275923935242664571864267550988956685270559200965048097408728459011998132132559843036905810564733763593559510877832925486735526108149876661121852243000367193125174987759404826891949019999494211822767043912649933341638883385919785686092982150270910738882040619646244823384795605040054701545651586492799154182478861528682413598598030778539252502596545245459793527441540005490062738122485861846986130419583681046256264349748847422659446842572305872981812366425340682730171953885057506404713975107964181286187816935401444460343859257316479366459807812644578240299135130582731097393546016158519919688223243138684479888732846365001411214936623815856639144379835469725481468817886762145345916465489649841315209846799372293207184481902985025620895517352995382116174679097136728701491604737745856037320285788903136159736515655254395196740386396812540460312905977308303215320584781710940034313182234257042520065519233093224913736794068918996897787870472700496878836467964699323260084530774137837083498853617616101509405648451232531410621484196885887817957886255716567354198525503490978238721009093569763465312555499915451533814716821290529975522724423372931852194722983745918937123691426182216024058300762211668042490886228395183572532645691418926913721287791595827066440945774626071665753379110746067553619649688388670851442863932209006792270216429545248725232876292999281873423339052290243049495030387189430386822254407096566036921904003452906673600520364681756590015646937840120009328195788734444032024464277022218932830322564304547159797520821539915276927291253769027755037605285298859579839929083137469201567716745517944521059602399666787189617573757709252408590131403350732613258659007648181047062797233422544879893014028701526642263918598351443001305422614078984463551055807819820456327350672751870278299721532289028529461925143977654670587836374794447376654694613698839628380105748401427005947816223380889684650085041623357237584424705233781841926926637347131913685073910468406421941689981695917902095331030180401545472081523316248267483325679189754658547620682983979636297071769231970892143255581256685347199380467162093918453308594425934548768203108385429978703459717516124847239816536341462298192618814279379091953470801887677570345560418974272826775802854694786122942598858898678831497769628622631738208430640778700200960821837146957233103605201838288543152479340013183508754595029552198647607290757211981596293846733462552126534964705455411290516046282650654088066122745431878452031981632742932398860920230489176498921651401826704106044771260910086696565252711121102543619385125650316584955337378121507415763080956963953121021440771961290074922790914726376486439035816555708454096287571581393300031646777243953078063372211511929125859977569988143561403986081024900787695743475128353368018356174548736683354381755468266064687831314035034914089987210793975130134651486136776630822451164455333584267006631446832999903711842836566380252072608040862817670068732094760172799447383191577672491401789447228578208345988051851353827639030272566917892674596146864955832391453996914427228661929069385313963293639155647620643088578442234742448973603865541584861158604337516763764035679835031671081688421536165322585868365900590690686684826755653780934578191276829773439786138552440930146482323848303404708296851478819397072779429175936660766655109624185494088013046947017754377016391064196261743297006058145400260045688787881590674056955198491398484429613927905552092523229068478272249965984053205400425849528124761829386564105288255034826510321330819265925199897629279535823051416811103649982920236996580409472815374068684243758569542530146759302873798373439426461958892517850023337457243889123997776176732203611048873238900595730801981528892007685798355134206634948987496666519230117234079867519941365450680194236652564899210182232818812019543078668574968729557086123122173832129506973686674492406188873214709207652049840311393611601034585833519504450668806272666182396368280464794142600981836806493273641345451741560045232558163324691835944084521331260596031831182970826482468084025950500474022051004936442449909723908102702550593760132465131573730733141080430063302548661606354797915152409960303359857038884744732674244034762077814049179311404362267787649063976337275827793615917211861851424579253643004239286853216822270227020423938768043083263836399395713074838842850669483484508058451405637911195421050746914025242242847416728397176212176458059533048536909141031553261046805974755256674389635608798357896582538214990805317473030728038113150024408389966205158754845756264449761687272919947107254831944704546177171812598493931468900398298173374159111978239696206956774700460988199857126417585091057748485846999283810898213748346928975734290120751609763333543732647353984173234338011821500638260533180269252749064264836723166304704282683091791823312101519234128686482788673976314934521953488132804751387016847368909186466907468261405544154016685452336859985931351298033780845830350932554431346173403902120094662463169235400800710790473117668663430188069255128056253286499057942657600718176688855830022386653942295400816000831599251095578225323269248806878831952175463453150032459796361157920393003634181494504271082580260568000098587231927916088589491968071146862483692489416314157992307841654064956809260955834666009605952820834593369661329903099215854012851064712832847894695885159248292269081159052664036671841150330447398753959772351676516197264196310079383603700767421882458938408757287823886441743113911712210356186787807910376594259513235051141016135938549660611196209269393897391395855410157451551260426077765361507431901118382322945984473869495427811736555191791943331168766822703252274190725519440333318084447390866781309774817809156786840706568207714846472321245827919979838939706401897509756892685417975925368537432599170944526067539622423009316670872316447333248400419533838249534461303334192919424390872339402507530397425323847977139438378464636942780559178792629325325127774316735084092334129977758092091372552078324244657019826411507816475753606749779035594435431450968725252618612882454878466609571414183600409938595799877497587924266492397326851499945939695994401093781576843033320746510628874157937652075262539070795403370933343100550610964096225795125729431444773326645141841531402883331069351870000404227608291151329486508567500949692078741392284393915303380031028234877743644145433175865043119695295805793683857373256008899309762989987061396937277002177852399710112886296063105390220867924342816601166861398867634572964510199759258229642925492097244731570411089115247601678670734956694170542608623313130344435326297228777815650617719383669424132672938944176858027834392875237379910552167397143060502502908932940037106920622970204628505026334676388196120187226410374285810330113115879184294597067251643510076660512993197351364247537391171226188614070042276734801142166086834068798864219878759007775087783166226941864097596730034316272719100972933786071576824135386420145378757226933349003334177015292175640280912737152902940677626706167500465136049954361595120322078168588168518516126490816954066749880107556171935086203198816187060168379548185316569307930421299349252449060428328391393966477353613027179180969286386260883923133091669522919488994076393591488071814992225181943949665215838241472229024642111646417488573053972837916340116301385863802543722533978836700784255115768462461988122667133153810194041058710740603316347777455884793665071054861985454686751321000484870167279675284393845910108009077257925640765574580567579208607406113996290174657441665275205754066198936383309904644217569625540587021204342471853152246674495900699013450860156449153838321478377094853056498409277268694086859952356085365160023525072477108137960700649735071480981730702183071200506438043271939864633385739331672419260721755815222355538918938659063635008303572008917810577100239659131292906375524120005630931738499065542892265695589961851885551033424986058442693909962664556619187134766558620526734124034482019107121584667905412098879710904337388023506653144538199965876799953066899341972344192599111631099893501937260634779994982449363144428529283366085337070878062252199796351644044844693310005751049906376812286033962844294253668978596414402159457823591319445083321579640155840216224994017320494575575060980261856859297890508537317886728605328168465215987499939473173997816667278949320532890604538470252953260403043284031125538803812250902260261236534260717373249885454315207786004590042909560416175199296714546960543031561713430742187170925527630912402034735436124107454544951205242483993918842130964348408451646261981013326667640486355270798148426528212421052082430419107136559896506483497233631174542046283809049795533330395685966306849037341832743078795914775777849253416402390874130410149838908500591847705313509546740883156654761225645908757222663336109971341659021963343827980651691125889168908753576231742450971086501916332712949464512918049003487980532453195924000441729168279166832152608698885400752972896510594824876754652940654788433790610535872272829647321130139152393482766454512440392975052015716771694435817630344068732886769740021933668605573918904921177816869484265973570206013424150662323991817386231656884007767540782491345622014187869170127596385376721713064654293116591941735423151251198233771732401556042980136830601033832417760903278009163359406649999063275505168645911269993392347933516714624024966563735924899042360244784737453518042738459561900923312189441832084484819542256383130047106958818588800386584603668816098013803933607224425327880987964765397196062415101385775817600111246250423751597096958831735585886933278455320621911127105158038792893034631482815218964398671791422182408648826862675020106826313385340658018855997885668196448846075590256499202754811252332166795611413945943966306387272479602932705027124557832627734118186649209986068921989733750219529686454209605654009962777200616595237721875085047352944882042064464142019457253676068060357103469903814307869897026427312775622137092627312418862862488311519003063445680463522647277025942778320596516582747025594533406615416896407271360444936673012038711085608725920071251819857009146263155846610952321787629546603555680667864014885933345448274343196147131244770886360537799859364982065817798464249085028884554581354353041639319014737612491262601093128265272550296260894228017475094695437576030804989066524118842970049135445953182931051738550665851473954682781260603860110694801904298455686086386736654456929936129226734874847671438141199610882546721501662606910086357159801063377547168978246231959055470916824683477775354598922076702995533568746040651663362059781154636926475841831995534563488394008544552893085508588410386718059806359597437206060133496463148960776601181580833742764850421991966571962411850754949149523750689520348180421491829685572543692612393127342780247047716052713170096489537572218473812508832388677499885452044865153813503093002072894842325217793329555095325814253057916648628026652939888811752369009453881272832845183267861180758994604990456350826645544997354784474044888465199614612728257690420369345897278435159805224595058233934558346228822605669734799327182004958875314529107560634565024362692218904164134825955994509040250571435005361950824887621967437483105311829432572250625710404530895978073502260370650202504696754670062039405287780402158917478551406521420719048298074664333543569987489540214874737294913652889444185249985822339413846657190946682525760881627209482913496829409246454321124175294750993983260568069435200024631530213180289898904415805019308899078929595006525305849723202982485292296566130686490429024911585652116803695982395710140759695835933212329769452791114845379208445276286858077630517714378803586332958278360073981374146943274736597264402772971899097559491904408664251167381792515462547073422844782447935518262701424513146679424013377161347987303828355337707379112695798947566396396047815852713968726312189901006907586237098922453371715283118415803430308073697085343534037474237426194038964467309640720661994460439489585903403691015332196253815339457681295918063121643045247055447085383614297742670785195439435217567479569818817916658603792763713368292846255110113856044518227043123768614820085092252130815989368019811980040522152589737135393605930220361576925528069288616032654784021540489567656310796212101608947843108282171429656985478458496460958506181907348283327030886361754628602193567324852595300527581789753177477829781394806969922084588165908550692677637717672154999031175292127264775671943012911192081502965363644532031746434547722454446272459728753261863299299679281493201618445838457553767395106391184695312967282593682131579842470154898008218147196099241280298212432523059402770526424071476962699660693012184729047501453987801027961634916182568492039003165852544275199370758913893401562057431755594636387757640770493493326540515325653498634282676866684860536219720365301643055613793473956565916354463957645061734788286518979704934606158929857648086584671341569502600968266978483357802175659675249009303168930498527793536631948547892864515396289119237387305523441241352213626440982925044576577038632137336355647614084490235016788624869246842201852776023284144129557170296932224571306287434627266716469105018917425931400271503411665054886356918912704041293459423055579670705705378416076453333503535066713320317987466983290151913337569113877045925539239559413632987092908522638524840666412726913080103792421634247278577581744253812802146738863495987273548182402597326239245628639840639690180743359950034397394905251186667606570053008769721154048861749465189020176596073151880641864191609275383871571805803478466262496817216687437977886979354965533863078329752224313405981564148854216311279670345013784085548582648856337046324997403740955479397184550272893726675753031617214577513719820541704025117850608455968568610193401346196093515205599682712369870041034681492378492155233907348384014171321054057340458988246499258509040563078027791138582172024082020409567980143467227192190257466719372739132191541210643623333865500131764488650932945438598715682023306629677321181758578835193987320002054133533431415387778879235119486789726194873492269548592895043602649098471268348745649541096455876999794998274767478690485445611628783122591109050277070036297660536338112539096957902269943044411099451250107415545591671904377021670644408313528996776747306086968917986555979354572858889331332535410233516348086801592495697071140580153954765321563877176630566823004834374568453095008235144433653770203642499571030038329667395668950917934956909031364079596374027103166597107641948205782197538764712078504339556824808094069195752425377714283317601396819713645283311996065498777065245907505605047475602280510270699424231203390233709528698789391800267118892452975572593867551071204594890342644688650522852812009546172018170379350684698656250506752636379175499701309013408841348251661586737242449572806424291727289808886320289554434412440445877466473189544361761375040347282685206737950237471559165951170729241169878428189172086475135392885413490103123729206835012890286864093864019103122975552773634908540956755557496074173055628524720298428640813900723150639324259432610881110336220831709678334120673574271803120851417178638671648220733554500898695977098842688973416292143008778975704766496160297060943800897149375091900241874353048720065509669748887969583380440228524285834669097881564593917975663137240366326379512278602248979835696624389450035107879379047997496382112074235433166940609538128288888240664632008235559895720556961055119410407155160625326813251219024708481691452392142202475733153188594289180766399618804479668025791474033997259563834842870694647027424217074309605315293028125221498309335815920324121477088802105076405407408316204064459238931739045068122340371284284279299913635084998443637424355870663735876130299998025035039353186951781769437775950637508763536092027655540409604408563025487299496749284172461302612474321158327451771053792666099603952068948021163203053277143089086223126717698254783403819796018870124886816949127886862650837167957053072580403849448587866990545995408874515794822770631978402674711128906973055956124869874557264604039432258761322040207147559492431230520697109117251735683909878283784170214872042119470020008567068420344569425281280428838075417213611350923805223708000256246982273033907482483350152930742031333586265617897915096745174163782430464166516454841408064241776711927509685896023556863177177519532772149135344310279478867069987653777832801359012397470969588924972254762911957075350672657764071972126973288664868338798807507544379720371738168803524176570592547072848291602094033606857704520589103030999472888228010105938944540126398312920246428674876715411340623108793036803462090951551817048884690828305833323471668169762661714217196472316049237088880838218071929692656377592601321365743222301224578149149970082489325134568159701419496037853607474563041031331618694627272625271429386915575624369338657294371234031217797230928097771358220748740315868796573683955102648057855509849550554259088118558270605493915894896664912915161624348671068094427565740769636234411749021833243900373873474219858029366343283557448628790745892642494663322155026186867667378207765359927433956232387000636457743014179580975789113902503777270113865173926015218905103011690232193290650525077813852351037094141239304914763245271036266950825338311371341162523169059564964164440550642948949540968834624853639729539051862789695181715834512773337346522125335015303652114450269826568404472978488871929952752157623995407118120996168942529062550727588012497701945723583148328109533923399871092880178653952970587176091974839070391445328476181195941188215691491460534856073415670697998708447242513238842334115810381952953453631239065652175571791707797064146440294848257002476155089781071657742770173918504101797830107889035968620400695690765399477055766439079727859202769953332622754532447371635529400912753434352468640540291179267220644882214928893150073511639038286918132933159330206191459265737717047836026907165980389371879096056351100144020223509262058902261780048293558656257835129699744315338870739904380426269021726749100303650263568837236765782089603389791642626872390601107037954334309562704431226342666739387462682355192932848911376616483327042642968011354575271914682578773637663628329814102464963547933809031167522056251620284209598788665116657440609447061168837740551273895419743011168974543118176172067623529965657517639381689053988145545796311833777442288743261585611523992065356228392292685585894387507211572866238133336850372511944408738308338713830312192534518318870290278899464314730530955328996505618282786585688935676595466196542256278277191429721530093986873278543304887901064181264139716377925023606671292332649627794482862106580657411048873565128790165068252808968354565065794272553062400681640642481603952227300756831613008887516825655110519212013376511099718219208955430823783682111532014703619612957017803662222393775291728911337188563331224249217626031097203790974527384432565152764171484875206299700766914815041713210930750677192937858431829088669483115996085516419335293195738311976173825478866934344900031542751687892348458749359418189293861212829258778127714408064590826160363158980536095514529283177452997936222789229502615896034743460139138008760778544772665566557254648548824380407332850066482122563419456577363882334604499413451418806749769730978253010469852320083675910691557027001999461784912953197409301379681378412130204085422259676813341845538838565956391435987151803857304342373207540235683647987220644506320114068052657699957656999434427939510533074631336769397626272029840326250272521706535323658059771429089917801414048551364809446149666876411405497525932128376545150660892793498795503775192512090963780825662685043030182618629075725848226296421292011111150626294362806721838836857438425945220181130749678346550735436210153252704683421590400996369504831232572423466188992035399466763163313738635102540501725415350659453774253654115007476364851655340924262379617049214054664215367965793790725141564812284159239135407767807787591259289577669250890065067180967203666602182034380896312158767171906741749483357504572405079194037389585755570840401211619561791017360604737265934452539634124795970545436488247404448654005767478388700925617522558712219328558100004814371922689236311652838267222377754641105965288244788834644605452704552795385599810923827730295750545577050539524841019470757204130635347944419370766967691658875491449776880400393114670378361240786385195478977822044086764790457353706231334666176566447320670243456297062709615493473937290949036464121345417643034087812313655379459868063069188138201020950787018861105525205844550474607457630148915675269423236057121355544352568917871944578625273994669771786211195845858263704796115761666076017777050720985330253293373580435614719134254024294542562933372799387068284479392213939785657120550318485662511089041032156632065707844367530732543831309975177331024622080800726659857119764510941569304125037563459444326274837622247686681051102269502017909728972943189099737571424829832325518431289090436655390305631411521079246633764091970568628203733811983375959692453390074104178382696200215736091575452424870546875271234072066389337443667692901735612447362691366767119696369525664330849663271424882556629138404831517382933667793799613449779522107605071419321132767358297284522895940227062699871176462803925874148733344844607819486844962063963910527603495704868655169713128343417321490656900913800127189298679482178438664478957505722719425066295463378631654743059614388190978036799319411727892230157603643557019692694918934251248226714886838209754581806665901664807383270258729687047531576588953735449512466969223590832516533309412173866064934411320151573541233046658847537181205757142923213983720017219696620880708370324787629055720618184408729805067699348963393426750795002616976325707709536548122347856688041168862342559862460506270919754571307168829511860583319959016348190296170743955872464637242361437976784732794522329045311318872457479333184157102039306625395967111595043593925531515625051400903764841655217785910602843250928122526421814775543401468139828100708889804589312904496445531108762003775084267297981254608913890440741724225752822058589803075317545555410527468798217908723624121674596981484623348262691748771077367235699724944344109540718799341831162963481892705061984434776346674580076882987878401079326583728274956920085939909956541839160611916451278379601400977079424051391234391820490227751100851678066229457262925887939871310778384870536100541355051393930790561337201093268516027764174371756435877610039296680146321077578006348665870995141871955966110784078445402234604980943605886848421590715873156000039692461634262741415105669956257180505567936896710818063082085867144105055740941633753917670017644063393074292385452326229692213195129883048301422202373668431341769826717416638706061105059119804231231020188985712224045126216967118646500570400990527148252787105635987055990771047123551061018883386836033960434961551800268875940981119674631847347732067231356309521983161181516307837488178648985345155043922033031959238750128915609749719982418416215007007314360137451097140378092801784460154767530572950833302424811318357630231005060527615834355056503180577277108124799810613747370920032271889039892908123364817788279600103753796045245396721869043554060939611671709373807161465148622546546965740850248630984610872879105926433895291127163617232123784837844150523751541639031780144748870437118958172446440409635053976059037167997384004578213733309884402845232092632894024592829029868653473763716872249266000384521150200899526661181209589431412482027659611305632979446091403183225590157758436738347683191894669097385347239329366193789435187716581824316522054666171178530309098186055177692959314867400084181345013880383140718576415531601759362657921057922949203615740897187651312512697912943447016859936907873801321263697227543434124957474870478119325329831066380763853625554082088273355364395671998096062690576777506857533114425734030936288226340501407309359677565686097949443843163254753726592506256568000994708358461714732527932574447838400364208310491581006165221054704340696236714798351633916079718625165285973746083812464531975183734006777738094915161217598148469608634039266794510238193097717509591285522102512183510229573040171250059702077488573145332463323661811751206950622414423139321275642719146468552138107520441406162127435763890922093120050730451615009821311334886858463394806387554919836206241566411578595277309154793402874924143015118988301033438615831586523076662323474392663230231408626790566079107168641261476692685287217481805484511164061725713557376740772199639303145934585219373719831107310053244576903380264798990758261965973995603594737980388576680569456592964717540220896059556963990534392677855819461415319578634631314960376096932596372248627939150854837435849669204392547749441191783634966611350881555703660483885643409773243947270095985880893991878771076131339222493935795672358680795475500507044319760285612618829320534427478148569793954538956702609509710845209605210499879970640097633777836638768044400071538432687537567908319446719354145204487711310413830891272741236458036421081706892526090726728761847588207280584991367167363258352931328295770390873660238221303075487824939825914892046801097203169323173203286129002947654358739108584450572726790960539906826205014152352161171899812585540239185217271702133946544485985710531555967952844446160830429857298302552799075101519852427384201200303715671318349089667234989193069566604887127408839387117325304446835162242895198203075604684826070437062190906111131459451881348153504137584971686641784819917333583625967050601874998545549858593301055534675757790121947089441076106607486205243450555945423450011421019680908481132912587881874704668768608167827119378191370470564308717379748611314034510757933803648293013331219067086954645947129461363141731549313095030873743370501952706736865528727054884278663033720443339240154063849705061860883080296481434291210245430064817076920390901083954172257950499002900043475283134460268017718142523829036202337463381980858806013750125846408671516226088706242611711224591656794277610758075171128010184155597699700782644996902441322005463705992558077492691553103666570440831219469329435377172201515016933977890330808554448272512260536041082726147174931242100540994872642320733094886445756921346469605606646886610698923803957392891532517403499492555184646715683388258395029289653471249959207355387412504072235984484397098484559351249034966600357404076973223471514925706544405488836903636007935983777109435143032043396381685314416798491574307548371361165846731641062295269822927249459480796426080935847062585179148337705600009891001248438117074742291704484035400036398124667569665962747435782160036176747876674427925622766957429407909414800023544161673504127189172516838392739080361834685070026674690981342363916430052313406211794656024106628967211080445788270743104771010550195966555856605834034192096740916500198600124276264088750584752246820001232107642167059477754804792072855004109932774979027652582595626699601470203457309588756951787361906601626511783450486499198748902350001689403000259126699056016599243494188256608168845680250736323069615177621415762687154073105323410491086904354062255824184060357190380791837189140526848519678393466501282561788981274037953657425442254176829824108988223118548335684286092655997751744012683351614876725014379657636586499010899593168913646793832209315246033573219581106913421700145682359044198326294392557911755573480499728415915406924598847206503140555984381493462918475861453469600853513959312040118319513813026066341994658758517367154934290547453236637947754218812181744582536139676297075460618368863986137671660109038580914153056176282992852039931948256468147888800103479300502829610459503378981784544056969442890570050815798225465095383164734656314481767201015264657943258571313392819948977492233267802612685226363117423800687620088237002205072357332673293780395067140726031804757419643138853889831129276550836276125220902575278091354671481170088868575785974009941742142372530853144565312460444155404964464192377331734594464598413572224332686586698270864074842094936262878898950622188608222381554112368959439619334304950918251550219165720755147805347855775321724838535187021551078147241257197942329322099140193005907949471152721510487894611991966097776594055886503373827744146106798600195748049767707870078284491251556442896457463654618439021457603213360443511676079345916685732827544614383402979383509660881965093382046280336232390797056148732021945128577445494991500242761281246055825984360688908578028872172491249295883212135704817784504898618802962062957230597653598931631269193021001899088273437784327770798461620598696647329682446130383615333139098837303251093455726673850508352472984364999046406531565793502180939626830973723438490895514706915999989427769837406183861506698555300506072536969159939879153983497095045328801140877971521360204966664344892213244905298771427697363966325796876477990172000707285818535919642429124795941554729475787813002018902012843797520316311817875076917293425318704262178869758939552822946360369171873610069293128509628991822794624517655598815647917084147566090162957683572193680226497064879505564228132491243718718665630403840298263134437451155965702513185137498580525190329559693388858443528473060067648442861863814028048040540124887558488557928484966046605627524255292692319856243540826310750076739403329342288623566208825670578249459417448585177400881736753750498840637426063555002780233434281355994314750655946965633666609443596679287347892728985412900513254023355815081968960949432866338975228853842588297317907905943933663144297139516944345891340504222135720137062842884161469107218933977574837132964533263240743599865281045686018129421270610678021034456096967615767726137561025394553403910290523641144623570928889438720433073144882090640631128964974268308320169285435029202406353558224821278034035475225237536659379882551661722441960725677606918521092652120321452292457960220402927513421757358759360343823854805103710596136166167857876076221566490911989689486099768966842702106969055529252098456767335249878793147700953458595714884757335776175808738770515375044143180079144928944284480322199074082945413560387765787857154919411451989545200660645520128777214795024412110575628740495719102569410942772025157976164880644406851417984250762852635157263496579871736245813731367230751532694262924502686257900763660650918918809561193117278767709212540501571032343364248218967652221080815856430959520914605640275618130049668164730651828584665038999760544163080817000489188827629544182793423802595159419033455039336691303934820771644566727170817518084039995791898249102159906488689119034422442552833522208515200081885567717725453991989520372489097290545599210549238415384794422698577385399629046541315837119598955763018690050305638047916547109872925296666957689213712748497613601585752006133715297790410252306834734373926002419770912197246588099385627905380424132203915387785530579588458060063277638506607000993694047933259026488639948901880165087647898566452533389707432505040673450734570305794178187686831741282736291031230382631054387966163519893016685060308712552876164593852716584024185947140758520569982863760593511911155715003468894521617027716785009877156675799453599472453321838369043197042741603188523826566273095471525036945804744081608400413175462691743886617187669741356516687321332945864227034747192042439869415630113840706807462538027900706584099212728193768994948587401692382693745311000941291649399780265941584518953801985017275654232852797308676800541579733016983013464417837589125379899285414083272767177307735451776299602503874798571033783014258458809642314479510587451372829460272667517150861167312456277977186030345379361095575491793537004782325159907048039608734519176342658868682953508167839033027366330289096212546952132685051916326389160721568838872220794889680707841215907771197818738652232085675006274032432036323777899379875062643371198285132523141738209763883882989569845442532114501328090242738388347488212508253814810744339118959840463033338516849992668700393653275801204312936672138623521289115779418371845790572545163120091013933814084230863160823742927495432186374899212860105683676926309540189730803126787079788889071551447949485096296598016684279276779635071896222197135483961962285417519209361749477439128236331359514459109822221448185666246564688456555827938343711766653115949306851136428549673949293337555848405522887186979208459700392090243141771960274850710315881433141580397659293788619521981453762239115513342196554609921382956686467320434279832029984750514038473628338076690043138307568571460782115567094305649015839484092321069245508801684675878457752368963285632176817091481950411529737661150499567867708591244903692133919440267989276436270177322564416437693335113964334082215202364372259920393574004789447837512163848040307137232187067872777761923593915323712568439281175059485833161480366651472568123547186201886075688009585682139729528572647964471320865114227634764120063304205329809534309814919070213775760028200813694760322834015784248346361818024876161935570713355410284637808815094415735962946303449061664998424934599310785328531400415775274378545709621734652316342613525601199285215072113078818864348264790664450739703760989965493640035966615820713041611276070651848542114897100735378647227112942671319272027680951523959924557285865248310283155418496554141354953012111003918052652488078006849499500372827012118295901134458220598553622275158666356698913422049484949713338345390035988134896599440651556449480193264526693834108828054918340736160070660794623506701398734007760276812727861433654021362842339584683966299837679576880773146684189106656794948442514055178367223356402619741549849098193958401974285069584947477046582064732754959251922739705735642189483026065015908461561194055150388635962126919032985867036427907830830912619338426347175337033484591233210883521597647797938878497342169068953289587142571070916158454471417227487234713152177286666349859786446339572995759230214356359425328599413356778207703670631775823623104846090869850421365719006283304270903009397607064131555004375814127118697934015281500008697744761837814128246170860241232842110588879807730581446812710342937133933949874748141039312145250366095156792987475088818139458323039900491746557762880424258197117224707519079188512583787153717522656820167658098680314918942180065017004249300627283840435078533698685380754537509674164293587768239813863846839992480492555540544128500926671333051456593707541317384829669305624373088990260265307324308093972477484592526579946641296055786313909923346486093109743087898902784035995480818367472777782504343751128119528328506689872786128099220579611408785135175085093842693058324033452526648197260597651250860919417808571146318610135801728179949928751921611002346865662517489384457275192649062689886980895924827830881432343912421903089592646116876927354065461700798142393067829192784820121131552271603943159411677591793030413596385037677002624993417112465612683543787898399693843601966584812338195072001935195172896391193788681005164257546532553812332414102989080463753409141417922296990011583117544645273042912072497910710168244821749814747132231524239117725326692166575297817096083516352216710121047063593799188904102142864491273360219972328159871645058098777487398977617448664011307115432674189005921822598309893699247077229000697056050523895375830030580154644989033415296462574747086097512320723651722448076489060281433290739462855770871150514277620411918866954308943261256021926898076245911802818798522645248672636981587782422988036162758123305238325040073685413997134876942973919314892907269871546090224494631245378893567115288805885081724887663261050642080861691233615247812564152132224728006440852659870156860304405465270204769021220949879693328474835330146805221096853093993341504126321552300100843117007821393816670611181217660087657102370262965772639427708327427115682603806849311892533973864280268263367147620318902309574144592690780338597226066057739564753098645778962487732979266258616345740892665361440871645763006877725586383795726186433269156460694643512832789370084001920479706943099790363374168455938769148663954922588656879881976233459417381235733490249658407126081161761871611151900866133760818189320029596629820072647038464100207541490577276693099439366711682565682930297438294262438582179477139819947971283665911118593539222814710213123463383000809582595290143002167856058415842723802052931183230460684563609592053563650056482360457780514384028674512385300178226477251154856855136637167378913764179234132219631682809283125482765767672509282953964867462992720547009853022584597618626241391681390345303728646869968428127966972409885205935310573838192808336906900681707828068466719073886684068334018093075200502255315860013982938618997732420518587996469495073785433966904755867451519248192528739320053253540916132048031430121574118385299381192075679593225225762040459072192948525574514083950575718145392946267099679302826459281805105925024594558521590075676256421042165137152152668766371630946284211473886841807979194951828776498747714222028512842925129178513934855932227234165626718565433158614835038640069361389332157912917527177148289621309947579308486010084285654220810146258079329612807699709104683904491553131650276622623776967224990431407792327136531564020762809303961608774503517819656660317999692133424825392573760800814491564990348124740729395142434635126906416326653462428547211344232588064021479433543470401079803710836155267103694794884361123128200740805591432424631977759470776494469921664812862695296659598283229460414532858418575787437262680665189307428139893283430558060500090807132900622803623736639597372546842225751503852991417262414443612208335022270573406402997717494709887395699390326782056319381396333155782190122835447061760318270025079194666478744824894297690643501171791038353988387635063024193195730068912889753040036272077131362902297050976656275515583748352203264531054876413111609058580176868161939029959972963176825192674107523417455475871844168743695869253453621604079334261785688019498499177395737454072405102991159562812401438826527511853671378123397639977495228449786195442432625428275265321743465214036517277478290831208971198692536862451238773183302626215849055962201584577690139532591155976308093397872328921175130028982370060427498653322075890580465904763908319927285917275870282134551068913408332861653794286502102193747836997074604873583755484932612387916552742277614898122395036860631095063368238736173762497212086514145726052159547370252274818715857627683708245246399433264548917252453926004653222162388411376154716493769350517304827864092956867870937399953656701202993253721534449858496071194816655662915778890447681948015783330280179319623466526299777790294889986269920648499448149687809713899194799528770478779764208232977868581707902752267124752848619820665688234007250741418370701780999431013694809096036216580362116746312013449395093761824599342390894646218019056407915240919261574186173096552489265667021681314099346016100543794380967578578189532845544712286291709928982330087156678611732075280807796642486105055186773013251467971451132702299128329358803582007538945820666609510212127324506802835161902128008223491466781393424350365360079756316879530828263199909476181107697970510718361302656643745092838996198094925593432783878767737652066766071795227060719204659346086970658304657284238797232922556668860480794318919774551682488179294747788679128358668930261086599373621900168383226241442250782058558155825574909647918161957352606515521352038126829394779320114012691956584024229192970663515776501502648694687414494926847674533347721922079205303920866157235896414205948821778555067893270038611948977411981260648787875433199884070700898192778484711123745961174835904500543172035120973622324452496817388258697012411800680305614159091512079144279275599750160851327859474691322564699998795054740054340431444681426160390416205271540228978712554327677284697761842954236142823518303490781196478496650493945216604668414154354588112046440969360501562195342779405423625767874188013405899385032483184816182300893268303844169526810875376365701373062043500710410231420664312066318767948627883776276928698717674754272889750094762234831509459789738395200851898192486661157259067298243968334849599992248758755258239882851027153500913074500974716297664857406515918532411165478994221455323321162076155663473803074487284040283755451236786055642366208716832456950121922297093182348808450579415797190282101964510597663248148327659703003504889342414579634525729429329667524971360587884102180021888354501619957894414854377843130922961393194561656819691977781461847676490271209046116278783530981608282143938329177389302290971564045709538280797613767628330477019416843077655709494930548329306080787930707126925751514210210794913294719531865422942947651942489195179964620182236531711386787178046713061698129227417930872255096685894808204051612843923083773202534106990478295333818176898840133486004780708138091638533619528201286946780168606381869687529481075787599536351451371432526237829564854159099372274890886767993260620775861312195085028276223834831983496409845588472327835584403851989878004392922808643349333979781383797655267440459396711860272436405953646108196590202871886824361400190547549947692530930696869047031269051649409819452306474020938174068483104863746479155558997583691976383051266691255615884808430733825119500350243252175826282596615759617886996805397171602695206670502465660069513873137478117995057384703759886868818665415408955114010250027055062400512669832111522941550447449768708581139184450617868283010291026467270345925549095362732180436741530746193624832089447529921786205849995258217910047032637699408942064294491839793588093075809015717704647135030545548669390489465960989094035856899528445038922150721552013559435464537544917618893324820943741115165167390812931577155427316304338485613352455321682612765839642260230197810649747560140554995810676378931232903159783364631237497916085151179525794551483423665317890760835796831388206590768142190783834225951930471854300482871809690048696045984427725245645151125028631723594168339180181517624628155550419171019114243828830713507626674818708677305624454760300568815047075520974549333218702788318225919270192202851460961028813722774727828666284229786759905090114613371699780852835134571749135429678565102878624834078746685940658804319614621495681705425329409248076495321445095475812919694452913755968295869451967636990755332197848320322579622581019859022935140020233790320814752385278084685073758293964870042494211818181890952934967647721071311303554527023451401944907317588074638265594195323745221897816531371994737382238659477652005496511278003792163901849759777618444607493473064587246862532947795033549335591685800376263433386646577556378435025088912307854306291730902702216402191462817415698341844387739893420282981315598342370508072931438606836564519560193880979940900374363606549996122857536198345132984572914653980351682081010775981917509883169876335833922070137937863499496108532882398328458490101963805805915201705299520470588218151780633858428951937941867299602934467889266970616387664006661803937343474665228000054205450588870929284487454077817305211878210847333967423839516032790839920359326021160977614720925279071922923450300928516346868857782145695600962012358470230306109431500180995372803747175937246301989013568487751409814689461582378365089976473725611558869915014809451483165187683749118771693023951927699678440739240905890392898212760339250212670659708026296346157753846694592194138641544124677347640963096862930309187871572232154365217400815614420739826730699168333519296045059012815521920612937971544269227104012385927380162510688046476060098484849563998732322193697819528673415335260756819577364448250265827691655779711783483742294830803949280606019367850404175302506139453408735689798480843430249494967552338515344070122387878350696351141696977995284403817650021390138750538099706768926251254766368012710410608246653092793688915425977033473046204772846476719194557546882888743824497788920788563643343470989213403925052250144640785800482720630146055809885720196792061397548912179895335715638305899216806442827696166438544442873538784000785792826472771449838527507676513546932822312111987666925105360609175975223886165485876279578018183456648436191794030655346998430789893380290791334305644026728753746744787929697225400849526775087942006450737948891949266389459663887938312875807449790341005296956787576504841724201513314097017077985769138407689387429777013210119167382244620103764622328864225106773342276405740286833470979991545377271810357442224143151245263922587809065426459954307857105881141362442548996577603923401360803409100152707843744693366474275426657244008826365367772794938604594753789961899783275569746687976100110375516931625955435922248040724897251196895475832620934566251211485896239530521550580362276962192204726746382995217401571526738833731159576887373007866622805177219037435486433528315452417117821387370246820674140992511379009875266572746704194648355623775629384740897085949869125679104408492291706310748478558851285135424415094854441937438033261435906403415192292674306265742965346949333556690925252032620764660296811598067546620902861776665482786018154459322527120602445442716825337322028703924786880835392374016245070954845462697481834737789358215386921213849319693277069204946821704926521612925075736936750366995597319127004141224152718590422652132765429091626853656724783486623853231758347100809561914520004621723063504855281012109775552012958697177663890828072747740059502935365919822677096508510390721092673467907731619842576235768606510539437500733968264423521039671724951403359842986409169372540425324012341386574087419493762847135444385064590556984659984307662516300620926105388119613285105789782402538263703779520599488150677219071063756252050762276816381181757083138592374254620453821185527592149053100980699640451354113685304918251047075409382655856495256737900624929337994744285799015954502963483091552916012309612412184690612242259591280138097491444944275907676521069847383480599042487536632898153284536120617058950485811821808074555246190307426547058309737049646367419730176335256788398081471829978393300017702196825179472029642033610242695965398517789939141807732567947868074779727471615176760281218317168438487048449057151496231098529014663786680390037383530184882812087501105962052093360963456189014741961953752423740207708311363989857334033950185410283916941703611015079859380170211629175154958977315624934008726791905243361339101611761472147470428618499391692195676435184810135655964175368998760749880041401884611488209306246596478748443525663191756439123341637023812336137981091523194744732874714299407421444871460807691709496337783985854821759301675813907741854719861021913238558090030044541717978663972863152441465236040046197877396784760918949203766125360341339793567244987745657872706843029508771525640292177597860425640210810006582669472725566496156084040664510629736507275082990806320882377341556770335914636968674924759164383339429437184093957240227872000436164344160562400878967747177392390746295804257335933853980305581572278105101004326971318154262123133715048835229544780841248663645149284043430103476431876056576896941422706207570994495875172871402767197473987880050954608465423247411933829801701103788503144617499721485231265492873829965478782401659561808528050119857540811004644565063639222967969454256660860324674392936775656552234707866314380311534661334349771462984771043748651220815174456539900774516410400076183802171879088055070907972168967031032263196817403217340692093799666519348793305562489477953667334228195863220711811543588302333022487515326917125782699907714419656515432120126468258531082166497628781663692306019113094997828716577330087660726232642150407854509067623715916916524966566686596553106316460579346731993196441800769958244722106041889859377256411293172298665587589231273648047401631270009718653231855125716005474976288163884929845985001384009997256188460484084617749382169373806415954923484982553965381891833145320567369900953103568598136928387920014285873212164275922484361806054942018179745516684387974464090390889994379762732494770923312733659177983883671897347652191145013766357293415647270331385088590307007002915450771470721881464136522164111272708350470160663188986432443699808804878847863474758558778944212861373839046106397570094524784839527493075225677824937834233069812058846263846021688773795756786134541681140803316068307626137672421934007094882014914282070030076139854243554806603344687055868533732266379997495434972457606272377023364606925011030400554300637368192305384130671071182131909782079099652569748737944349300918292115601483600799211718831735626636417905434876725828753640822438553200358216419274805258161091396009249077828559429181075006290861478509865089916971130683684188050104439536742128422550702740137045799310165629358878650798660128847867149004337855666783800985681990543500987984580483933747247049161159824944988533137116179199685141430014182945976633351769388638838442468103169615934014844850657185039652010290320099254989533065932702810123130177755930140292807079152240005147718862419391108795877364654670231684408619496684847218634732845601540995341401709000593011674758721643271940986565545990057244940984116295539973873851730082736391825737403931293929748488536155030450502817984573592197418534288577727500270911354738179513689518558110573068298190258763709811446928533951731848632783172948934416740042688216931604224931289762544406933958154105078083588704062024988931677035328936593733399442765158799369637445934354425926583966108135694746077100323148900627474544515188731471422468184925154161699520730962546974902328566654679884482372833874442492707889199897572773434278722527206805948442168030671457403889469253869532069922641432509179695793006705173182502191127278386409883161996490441607927897274532615906443836391102376900703876486128575745253642225335581430520574296642578685552539697611712234899956916904587313506904710108115248418529506377183279263813685367604014534424569256405069954904364836997399413467575302243193203357778177048832923465264516153115585153491193843405272370422679233227692766260869789097300305969963566503146161708633777877731905192623518874819581916406135210800299175092321399482873886141797588335387192012156735091196112047063165009841722774965097503927486533623276934966741948973674335387951017200031263752193264356396893946322188826665805672048907366681698291261383731073686789844264404007259311063553588725533851834310106824528695054169549193684734332053244833178042259417996869891017947737907703468071488347592570400253120916447266777524221656356468821055483778696751328848268930852663241534411176786268057766062736457850154806345074579195346425678176024756564999702504429124493403421946181305448315446976622801738978614668647560371628931196505059668618740266956756205447333107994887818421701974651088682652774363143296428679557605799144840653410491829743590642536908092831466249353867873364701799192662350816459431937153796351884453007055562745122308221323373934770734169790273288059969269207550377942542959405713547801899615470922951693131646866447031980416653100392360314022389819457662380434188208286463176628417762509333148347301946731522445333150714767797504271877144354742542876677016985332579930523852882631580576046986578141344992439725023489324032754387632278917563113075094511545563339209549137838687080778577398897489664120400872787070214161808384984659563345493841743146711959465524907790653283332904768352285440439962127260569349949536090289031001233174970694703159777007066454083599945443750165479637652776386156880425801144490540921281361871884155223458974997747386195372972223907047548993113909914312569756597163324528671229682006472083288973549409324379875400562382255958729142646712791118523362776743915908307437293052055319417091116341772064801012390482384789871178117061997671313995904377147096543749357993605174572825803804109513082631514205623051838906235841245166470363977923776448248626854875623449309563514714593607188326411474010909913521328208578573490448213700856986368733020495900932848786110162396415001625590604713133525108840501284917686069063766517533133887448583348961081304135442330495263314852425746716180769543681128551607761144153541541894179438739203374852033120298966170322689111770887405974976743619172566174604951490686151381502212477108912118598464576906909709930997024474615442086440226508050410509613617774438821655023400357619062043371212223194855893263774073572371311101897030781212654320908718630108002053317199764775474321584019066284531258686706889552584462963627114602995738185482446525934880684226470682330489917188479965712202091829314422927478015434576544607371670663201806096715522289458526057142279501816875111450353871502864371155455822042896668401616718360526410407916517834587153045795080813171145371063404752657490358744454915480664631183299368321708652448356491864495028068097045238323023637426200206911457459523143665169050746508845557805712987216172476694621461734566707972702051601394638131372214608021758136672468629814937367050598158560209832029507535478781731056446290753125141515336838934999505647729865579195905454539686316126991483257413462183534968334389810229504499853571165684349186367186614591614660227679222975633524886743877198124972266029429435787630137572559051899438952571657531061326626723264432244908787372758509698534315401458076478116380066374059374006570570996068231707197082266712457302292279663119864626028386818133251683038510967268568510005654743075642935956897779549045731925612864175388174676029245643366627825128441065349076328342678568578576516092489553181416745325911291136406965518217850918511992176040429978813364280158888157391457784419474365505111128504099986133263558299452685720682762488473614765521507639785868267836658196177266195441858389417986159729119171462683791903516703122203589562188221062923370821540942756854165807106167933501379303462804761286083196348908498143929122955596423142875161192060316894169345169609606018701207801576725052894367628241145646890857183212000778545539835129100250112267972321329283792723155711634544472103600283898101241402227132304863160824927649754586308299907652861491512574997491961494445402262685806404964080337478862379441940972331537402411655737657776706304787887104210042661103594600196658434255397721423181678957717965706550188296336781738644990992684760236869608406505862931104323223153222077773279163663496523329599512383188864700621325034786106640264130918832411434722856973829215751055406097809219649462780784888402888712880645904193119930577899282815556973274703936779192873916456605010134463709749539854933572114574645345276458650903049436232221687506407138141937231974601050468698051242103113489164829013329890357091298337505135197792054243917098930719273601015723531923138686860973798840055876289308854617292374213083180556738239151457988382988688558329975162918714641577325352454194785413799174181754470324593272385370796502608754080961327193102948555102542928317879413838390764032049674193934151537463469922738620173123175009505606856641701982254695779860098860076390126770277915883146216127723372325163577451234272079476749542737901023735243200701700550950588367587884732175654947664268610409774509510125398916459869152001872830774470829165220018884562219498654619002883869997090245888163808897072832481075329010110368443813612762754906122763785220227049875073674496456067096938651674235805870356358685754043654872184530792631352831207347343529128444954093851186079291414007967416404867923153787678214627314971479911670007204719513523228320291235309455169723166696660944290680602213961223218627131223097305100773109843951917905446191632336441886263647748926369491359983249957589818975819281297473383728085637284667305681079834856704416941093565628682564113628731426389671724750220810214542366452659176853237980240957951132204397488408269421908150269551276324348802323382933147047765184755010604897461076307028251487260439484596951314535331025357482638669560582548244867499496959145123031817388313232974597094638568572826149667041463877007665905378337429011316299971734217812702760408413505155117424536612076617116194884611843864289300251610111210164035962691322589104443304558888479466433833327820479748621029755023528953640618191459792945621429380589847895210514035422887160745780059174768677677278190747312998456298837156145865457806109880974614482919144583056829004254120120084951946784107884029830403478976845201838282071277797499680075012718987808856503220493869552843765439504131244935981121812501240718544571912672993138622495515338044832883748498344367181409028616219838781358257558346128234739139408663106357244699717155614970206891748556719848295320994942613260982422774116141199071275246838662972519337922626394373334638605766344469339904206406328477381418825232271387490800680769019521371616757023062113872826276156800702569276164833934113365756782384473757659924928420690351882620413215669926705679195406289822806612971419910635390192323784787443874039466371343292962432943981330602944623489522604251094626878777480391103590296849255358176964639771024003916620176954170253915994963960421324972540548970659331164718845971257834067719354359540341533356232372895971230905269024059557282611155416972955027818932913859354980908965176603938402427560487601859075193035502907356324217102801520025126413846235009418962945867376899881698287983041532645513628561573399847733473997111652902035547571514938594323053540994661513002634148694439086692120687895029271052471210029099287750757573639613084477320459648612384229124972799914117710794632136081006344185568363661673763886344660065972500533396638031553178463410728517308421051543935725157056754484038116383779951323125339684336527217199887324480061765450708659012940634477582589685925395594963283758339014032535979679139413568771728950412912685627960882006638620832517178804988394419591985094526508458333015092879996235103473249258522046381700152686190863660891064179994555073149562422703749317478635777164621339669413937347499622612516509277000977907810752934861620760748951578674172169441316480139110412188368590579594630599222011650426937182025642523567871462828771455340314689855069964597275503241547026321768285242735470970284925787369117648867464831701978894829514731592348877776133628283868476352596824117133547850648991099946655717963604951839229297929812516481433893976309751490787863498875676070413808860221577929913442326965629630699441732187981614931165201213339319413796187604452843967563895487335266259395367177600988982411237731710780786907215264779620482020307477052671140718423592238245867817331737977433200219805069053567907378683899357743358301327282620351263722883850001425648155403768421575050747897486856858622954994033163403702483014595368973361030855335467806497868236499339010554658677682887018785283486099608927321692793623752217899593983933969592281512358764956495238903870257864024260493037313823765189132747487930197057922083228735119405662370297557286696089917547284239486044625267716147821571445626619005355050601479935754272385611093714680859276001971402839903752451666102546293899007151591915773839855929786361575257282135033082264853956190541386019059455913749885672459219970287776925285971575219625851666853504659944430155062247353115998412591156604829268799432185908098007732202727165701282899599652877979989807358777803332080665286267274724208518367259408474089964573453981725296866575705811981423493017206640810458937658661050263218795811529914742102142375117363753535266452385611228056471659073372813936927713699259459815029507447890977198440797641963424012130143626812064944236290155766983962795628193780697134252058108313379937137097903268133711704953861508149884853324106933315100854390880607712902418390468054509851162091149684455034422122813779046413652942128880667786142878695069137946770816128180134494657482555465925590189900939207027496707534910338361208765643173518862799984230647414877004689960008417600761374797931530762039476921032119453320901074917838825463121271007925790248145247740568609827673821724869297686458229076821522886722940806669558042450073559650572878473626050285450258277832098867120330428906918558520917820499458160501673054174300791318588399177839328614616689858936909525737458535521605115551892673522973719131758786194863222470753190881995294541716804682500940624809169965292319229490224478347045381999185482809301017504788516184035791500207664414670910135469433010626752714214001109486742972125421798330370062998218394123039330163218831365801780629237703905542637673110538818675592712108550350795087064427540204220966212616105083214984777133114372701806205862858958190545836563220743977820509439082862939639402423270215697814201452133772181130697886901441576765056389385112945565161388327203955480771180830889876095297954414040806578116932154157336329882789372977496793592803410775316788834683832581860057472779451027758432846939029957862563050113574014031866241488092518552967073790093629892866841501880027371117230584312758258508281009452464636870710282322136233815320224233864461779977052070801501531230655881536215110995820131273153159878654983818271809581475269411880309779852901457333952167935683932640030712113318180477610102808784888987848852141964602037567452485581667034731190486538450044774682471923763584269612611618668460426068617923026732532734567845510267454283349557872949455897952173134137691329739687510295235697692578526863488990356295623465162678266280622585484282445150662828913626531498100213198363645670482547694885996478602275657015142190850945165627838902645055792947227390991976653026494545100523949792439617636129324289999330948251128789832336265802072110261567291552351897000586942391250920507300590908754879264912020516097324319126630197948176036355500217769223952727465164767432603743269633703719951031455510635980830001125272210126970484216756085297651383838518952895294663278096969713367725692051130517308629108622666342544268074749131939465864707204841713807358656775464250309690423883463572826669803661015507711805967875266673077192720994272038643516395712771204286332743359406347288038678831933766106890101303414493831763339968435871072558356146933854649447155174930752714384467523239797561082010981575887205325083829643871565320564889975673152457818389766260547200138117078617392978758084757227374209727090583213517134672735958471264630967841258082798531951529703617693822903354923700844331929135343679603377615196250073125539397318369498482602377420638140496773470848239392826662813665481631783671688887318449092687652073308884180157719463410430639940905595268245647357410475191361215079535114473455805630724444760448958937522548476886247228919167257712512414993728862757154617963242598935748739279018295779510953934688978757014514153020052465670552926730818999243462457393780039681275320523662071729320926715861686925202677317691592064566353069096545546781736989624972703112752481300168346007537023241839584476720727053517826954635339162412686758477988476895007167183287390388571829582272945028034361470598011404337480692427082177529707351746257363773715542663822726015405508693648459992464860872190445672634146405958458037209098108906453297778308050528585720708042704109533975374088165050796702299195108195900302520057202219299169413505677795126161457419048842506239873837736731401493871123510009043987597036077608361071510354303190333776554767625540364341487726738191737330488235857320780338353506630444228648808204275525329953377151566181439938673211309199967812015320992787317237786872852391369103118377314495574532779351191579890284039877960173803681493678429114346071040378041792471630537796640583206871537148344910721272001660771634265798117643061731645304359003617326979078073002214265280132678394691785557669674392860105721691440772090234955035274644238899350546703819807360821678955287727257994529308116369586196724264518713319124807564159196521396065452862679761045390596235301159790510879000780610081713986996228450274187239271069482314156423218487508716837328423431633984297577419060914682653266283082103050171689296142927262883921323209762899704307933418391524414925100265570496428768206692683088221418061528075938599806889234615875015800685840308548692742558425780098980960736777786666459361794788580258895329175833360622053827783140367197521800543369632794037211858434558699378631008527458926843951915416191310305411817544190930703587305825355177369091564885767467770796642558238214386230711321165510331451008744069064194388961680473889275283223972242269585914815490851118366312567386585840989362097007205229788605020944089480154073408158870199130540259593423956509334410725940862599412672655059302497216211539054230740259312405134993980896184213107946191731403494213723476652195111650651147900814881703073725113397451871035287598105484568833351003832315091366838982462891921649200656761659696748900277460589682730637756525505840145594414420239419626172061876138140556730311357469540135942365581901945063285763987956842537346142400059963374140493909343983495583850075260959224034944875626562499255067813418933656599908749416236249067879419498007964333744106264655490904981544725865018703734411016877669048857962306099571476439145882466364292004837837818431086568323564317701597462774757623803100527960918957823050417352505326523629599857830200051445074435590394820823054873628059235965805770281193956679025447303350863255893246722916563420357887588109544533404844066889152399660720308517613214285160645040650004045999490208803725002763432827327923791717201250087555411850250876593950754256852176963145567381150807060528131663252787228007799215098814317440878522184451553235785487737242418120746922135360709097206123442586252005074763223171703408211465123663476314295544139290354141658636086795531092052616269988268895520857583402954819263008111297257085199242804454115633660391828475974022159900701548063403312761723901844576984134194681333655580617033610470370474595483368049639845536434300680708485838465590174953663628660332100409963607808025111307271947182977899503420245864913639258544734793229735976147939105840207798213918790207135900903992318572787074651249039642644716857802163722919222102899546816733287615799394192883193354507683103461986467850633956760784469450674657938667651054924002281534289931320612309956311890489585229818700164807372827679722176260756983471356184024065333589394504001979451942763365004860164297234856349768788797796592006150681775966187996630273407328519585420276405195490296562333206658670035357359105603449392976352008146741588361544152893906641422885509118451856684177957027550369726326282014516215900305281714286887983072743461981114515864190650783529312592629975513278172343879376812664090116332282589677465231379334485057345440334445765197404992404454553731554588198932544663273914134891141712294743250621677320315920151853502255981720860745518800687079600245884450991839096261919731992964077795126651024649782326445487378584532732182580702657892935936458003197634013446795885871285513250279412842229011658670104772916969954102010169594280799874356763090689527768079182875180956714556229604412951727204492778611084356367281778459913511558441173555119991226631340487673558076053526624012635166614031423135318849264363400187010672948859710150530608120742091538371833702911523117811707794604845462229772581609899436847918978857901736621969022337685052078737678030724330110053786695724365989238836074660661184209722889911562443867561670101445958719828959116351011086007356275418723503287272475812120649381975091313079986206670652220191146079217823194186026289711556473325155917528163748635076395092987200405838559580761790111097780460584557361297945808772342736271869589168019650000246894303929064102288394149847645569081587365658658288038458123256102508223072649665166900011597919156510738380134992325402874876504459150761865953282461877097538587426847631665861879723605478931053245544437765490649356602029836594584979988044387270165176585995128098084273315369052413359443946418481905446277510722916694241697034761566491787733014448364096237234892963070378112067903266794708091637827872710576078033516189147486290360349034514817098903901331789881886001644469044588081117707132061796623638739141397283675981113535038815249189759892947596455347161032945658361617324704185993881464388204628780197163377362422240897289049436986859915084233387586328654116820172681338185557101466089884647363000617102774662959900849360264285313454235017851178905816381221493666634061919746170349195655791464228003551872941059316977594831278628521398969026473304644352753872046965185938834558607204783858747269093959164026314945588952788470041866060404841668610607756678863251442063286040797688587020137380685073903040397557895143376562542914989036886480599153625341535071282562763588402087713774552774659604954589058706246919644229349279087693990463052837378416266657437930913191034350315234397489285832483049777788072547210910463307832589248046463549447904431192972875261018252490103922242296919671842721825292251967162469131938143983439554434367421405811969678529252220931220278572197971756232928031852094537598660734641620907454223257401784646237899348101414512237027959113387232106991548781624516294579321102596772202761773384126263404105255369003406897130610395084438831289421355131218452335316607893350517900776432644151442009716027833555846088246644716174896272098889122418152084964488465363966300965440421673004256048776923990261806949842749018307055861507790042993517809530910004233350537621313997912584192170568142854186081510920227642017819935078570479879688942858135548479498040900922499816824909918675777338620282212139737044320770233223107062748721471742058305273138360934892773980163732752204619971189108986298439178920346817297353841711759209378686784000220789137681018349834393836703076152963385523506348349978931849028220952792300707998153592025091543798417115583654793503591803751112839386717437410163010540588332510296705826704638176157209602743359569918705651745703491722676929200451372824079804390991476082539565618509976331811794698258151720898251101519589756349244576836106392429794579083547309246487970457032393212187324476250957260711057646796102519394021398673063560692996334848161570114203668683469347840189168202189125359408743872123328127492283560578321527851855716597165573372131594327585823256683996435732857459415571870623101166500524541323308344133709850195665033517290234189558919412869389465785256769940534006492300080706725521970021295901290807222986037966914415575963417590446691486739326439195628046045626191491716979001159391786718258310153637754804683244209486639039367991789655226967191291018622859778742579672041718190083936330934469023313806917993901966471089369393510814204871390981150271134924107736701403074217558814085306560839922030303415059497766200798131798590164092428791286000885926979546787607941610712210920748044748688128134598673936422635610899384061724317911106311243455434067496208797634105826123065939962822849688127537019956430410610032070196601774668999716269458988850291643835524019119511771606935974027420704969693475961912186741024993787753261530237617512542356650828383627476200933608019492441398725183198375235853010114709777445278962403768181668879602371370438952324828147081673217045053984506449129864495579782016751736621063551956665912615464387302881369987785490469175427943085668506817288018756783137178317382231985840390266540331731499826569828699538014157019262809532099098541610396587440130009248518466508919801657716951624956632602039542612743449993981581680395846623426819160995741694319367791187516963169169757599033688499543775319102331325313258397644991253215745496742698491587566262306938794235798335254391044532009477665266062336305661548746287240160439829652379090115921367085413644550575722284505480567704159321544214245715623211396504145643072562774086479081781585663915983196269371565262219520518802661172165594115817870000654501703938358251081890515162133122159084998067142252857844512156165175598379035758655572365030100257475394423977243228013341242114387702388356401684711047484261520110108115330063533213453042659223643103382256753050617103197512008948175607920554526490400368160049267372626840230225511670067421895265448332362090552901527384115072380721733176643793815279811392881563560271737114464008298694907014893470033331680666655135810651171605637956246794011341095093095936345099230901692769824949371242004557213181162550763341925716130217938455093318013344744727422790423313465848236214367598153938488697859350315466945009031372517956529521605586876109388011216475351585299962406860640287280412824618139291991276168976068403394148060594851619707772461256738506074107679170465386178863289474220188424607647038924312058294204213674838726782577761370052206891147693793798166106145885102400237245142226450104349510202367483078326265204310967044626356072599943580439690602778714558118084744646907622299792160858127053850220889533808369265040476085012367820777966177769809037281065420720310463389668527998715864780091543140418394570634382153189389444027062131621493902580728741839819481555815022570240385815148817313229171228307233462589327273324027594319301462513300996084751739272483121533953370792219145143622630062472351198966168275110820275836112669794511796850954860483766845862430268382280600013749975901564979864307055676077153552266470251909412066641418110801422691018756811168249326674230048867972814495640417084894285747596532286877983335493411117146944644046566827754516783854998814160467929083345114303620281625993646888018158484266620812020831138492214280473238189637242160980294998316151668872728138511521358815585690218508485311195465611621446618581761623705615036661581516123998159630710802200034762068578241417346768107076985847974486207623850647520145109286092910634114806127867645573505259813923484854457704727011016289279796189624249390160916322358780106158062657601265599101705144235081815885120205246372610594237951495586703518713914534143161215863781399103334256609941267732006555479714440366885905455090821914545318729504832475339884853615417921149604156704324156803834949945709851631737859900388931850759618154304669899229943488385280170464309642847596897345354405724093601956061081079017202803977428421054438156851645658307142987101942193276834244086921373067693425866686741964022213600808818749085652234901242098740698218628203122995584912173352256042259352529340884994293665055960464651794101912856626635365896970963703477129469668534859391913249676879794198246225025783817252004517292959095737148500018110401400349122901940102013124240438408387258929636053688919708203941770108822724626265041502664006227779059913268491665809437555711915373780158845121201314444997356160098446532172991468365581516738008999010064156414634297083850569109205130841233058014288514321618986468215204104398841693201172992192421156829877128316765386719151683992027051128864717063802615133485050132175718280131900957752490219455659476668620870120569901922632489833764514501148619229191651611992579842732970460493278198591598367025710945435762004087695023371823867073612950329619169743769256291732392438519592632724821063547207557883182179347754591356357968882646529067143870045544079759632962493037309089138900713497532430557004554286012951307495163047324976241929886934245653715527044662086618420131688066781391519316000888510806756447759511896149782287266063993115293386018248208982124976201225438449860980211537795822638768465483255795770817514914200877637375535408711401477542041257067818568194217321528753658201188597284368554018608441360031267462861050177273431648413782700606860211587379504861309415189130870134901185138420444946058091381414557725711816093038284427035857343934839965397627900689920340914751879213914665622931866953845262704587199913117484492183946204964094881443835062583438600560125049250426436614785913126235918949620242776259872452545740621910845607026842465140215501146285102297164479486604501945770266285307187890902863050547490983522936329096067316294176217182933647597676321608891803718235999853739135810112329322076679238146393413675522321952320123660856644805001698246087454922990014237637975906287714163902557114105167679130564903643649735430968301810058522488716246272188226239288596550883568936867633534208929384564070296315967521160003132188684272242783462998041712019870376292411984470317424575513184386284103193293328140149968563490140283200589507650483123892989304551132321996748081235299494362235059435779996698325158246039794301633859061216497171842282303242904489879413822005523080928648190828849101914651553905931550828553487668485749660089927457217797826884680759091476425526873899888641811927732180556440728914203851891522892523200036715184308674870186211087785714073817206873035754576278584307182553832512056546924749084335468201107958083056012401400882033670336259794513631217304592336414016775905179034125085148325219473453665855807559863762574842531289100611004497073927243737160452897428579072982035300063104279004499447454670150944356230409919275420331790296774586833677369320743436454740595925029882994256051484769982726974364107476911785353990885288847729358740321872848672989364654873331304433932623188690613242240189478784241236476779511642401621470269025552676859947914489001718503412293565469045160185234728095321570522641249130210806194928984485310153351084993680155762042402260225227216743908579236739496683891348839742640448385379712405994431353682762158519709712768059406822198801119802890932985678219746599251093403730611467726682232085992909907003542649644601530212407919925823295332770801881296601389372164006122744174892062934425719145922139675261884493960852938836577159138800499921193187749741260373515390198510657883400043834881907405727611163511739751871754100512009995113244876631184482156172287949277420144700489139198075427925495242255993592117080965627532560158519290748141346027620324970145846404296471954083518620453651099073664058673685911260832316799521319038233806017465603311016655996498649776730300612121300967054747267307481248303013007308691461969466603038619925023429461720804624033225791081361287383059616769310893015026253791790176812447592369070046507683324321794068474405952202549363329616756404425738264063372177975930153352223283934448031743630286123146696705560385557492842289837812085070825860109619244726889784626201508899516326566672017064916445518356145086975416154480846334235492171202064525564571906043950510349161797702679840790738434504620042350164852186972961142991984904869883720539416341946756064327242139456935914731193564005222493714501360014124843990574328438599137244075903782726847637244274888697109538491582651935812903378549236223147444306953763554469243941930466763119234709142926985851196375506311184926748075208206971341973943319315980004283831329039803178069706467435210082505284665679992484600587440855086826741998843271905405392699280733347264269324477255839875139351034589208766859787096690313825019420982812013472904244370484981470755507284564906660237878209885567452746376655401347766477816180806694855275387488363105161218553345696417332678655713417638681534828677188108896417431580018081244294911430148219133932001549329065200981723940877683974688886599020651116716535514462775783415533770086197094505159305178692038179603900085934776061427520328610610972572854553846556841211641367268404328415422678153629182948786208654370263211306255242100249663124900489826953161697012730509131637150610755035417874432935040614421037824249977009183202346830435580539456256070227194217594181546793032797862765703607497267250084660990775294551309648066883674168395533651765208422971653587816843743819852576335824725006614260806790285492293525238529433943677900246021512766598007937805212939654970707087698204102429032842584865906308010567619980646708715100142475997142312594321960227636783982860016224283598507697602511741070449012914813836981293084294475568277124977443019651158016457869401666290387497498002339307272699814364397939756788108896262092253769675875206287000682238996274479747062701989183884845587153014197426445719981049980348345249964799111153317401812236305880939404764328054111688291474654096215080952660887839169201381997887937077669043980441433270321797647605690368180018059057642179783966979150535546662704515666003227777410655936304491535794632130882121298113520180217172056846552361387406641696011941783471285681210675453055731641133078147364345412955954539816462903424729389926944801286812402270433526338594604547396140323855333488202453908539714426191308649795023041940364970324906795681241497134939572569901243626591099725047527080342596629379037502906931823735839607437061107242191738560580075683135799082061757465363812608913471547628437956413035517573948662538654701972620567487618385550442594674610205196525144566949607977812041147576716458839620841171996821265026496725146931543575359674755801259025890821556870528261179338019482377192132638850281541739817533547359547669292693521668433078032170013354683277332671091869651618615013385776185245875455036168191773053200426581506076947936272880884441020674523823517256221940510797940970319620312249863871606496236109524258171896784788748833126071765470976790354935424956711568455355663174643083250585024211059206906264543516062036452681865790183051211927860526994675714593947472334707821179157555902381568780371606131094459857632822649330314909616504424944809536285594026294392933663230744056767983804497955207880497804635503459319915420346641095927318307861202293664154451533923287767535753977134373033667744888576024230268709931254346978237903357543432561184144423662190321145295492423138347860334788117531786296513021322395534958341047982830633916913509847818097256242728930688766352580171693293686863686002916450649565471605950475460281609545309045661141249647739678726857452231910851640714071790805106272716181547183122271036933194877351163934447530429808039725447264551712474366488660563667989365716176255066155849377147791998684432852442982356058796584080396558983521019696174731662041167276160934791089049824710780011045632748808330982667442643566473228416080863954205851151995477504949574516708621094906812122715268560774242279328265902558735350465742249482676408181622076674662340261148958046042511146373820764070989323241210588283172745098579176122533192218244217376292212442997089333601866172867556508999770556569724177305520167232017563955449086253833577196448209904650343935516747147085400281592577275058400117504011821191566026383637751406833259348417604821159993658852836357743617603299774681366009045503284325880356876486429122321112279906739463785647362951912885436487798540626943939014062711470758328084584844694202157551090120859747752542032247246332581427016963198052422752535091787197521751153535110988643877550923310021866772145181904375281748063365606571792052014222916096428005857056429293003616654210672481282368008097006445407330413934314888224289939105006484188671617679637907979766515157784770323528028312419175277297602558378258123454916250999117311064521685384008324361352395588504996075782120707037068113118654381926726554712314160399933956711412080852532467265290896490381130286404389218892569096179034045669480869899579401689361353805595388400388587887682751222795993380967736327896132304794946113619628335528631699787973029224161228578722288266723447242372998420514860708457209105575502044017812375560633255523796205154167693178436525300988031823257212196127351189916753715432118197995754274435493959088970026590398563861830125923383271468577881792477275446680053970715039072382127890951724788737011998225835974690607949319950324098943830373775035056426885171925325867532264751557139501340232710428304669849463879511251018417679429863400502668537777532777860088810906390176614858728074695566531551656889039651775286564666930141828009208247085005979382407556219639367787995253847453113291323476692757525537149000713642503806967767980731432134363740113699079816261953385996721683768000362857778908830536977584353543118951532401656254718057302897404509649213274526352238602095128685122193958364668603325576274109176215592102170242585817404921076008487137599806197922038565015585716346714127444844224440517891756316950778960527597143618797325073614523105274504360277073834161971524307281299034784986515596615271612704144270935051241953646629929723206386895351958512796324981351838168788956744583961279831131677705593043350131928097633813262044095498131564514133764502800794455796875872847338845032049201164981769825274564668331903040105319762056098365269822319794555884761189365307697085491936812982927931245258702661545477719992254816246897468536418581743359998206025068929948241979137868285814060812512075730671366118017955121651223916485718931365770271839407026047142558867557236739779210344789936313097715226231472082519767474902724149535698393875574112851706099322568387175869155447894294116778299307081615277021465626321425197571070288858353413231929602466421289419798633346478539141821390532342812937071064993281263247534404250127517177277384930016666331441523571823703809890714280562747860990508124377325447452549690505810124162546458460090305775753691198915412452165511655198478374046297968051743808456649208878799771469636577958407919443612319142008345224760728225243933637500334996471472396411373673161342293853654703344211024003169045064434325458729430157810096564682280635377571420761155922877532346688982951904917612326689670776600687935601311160109710142353113237189212552300581270091992595343600340169455001697860832339311039354922870461407017556665268545868335087167139576865566059737637917269731241585729408725807577850269543623974139664772990063805363169017544617992875020008022057561993621242375308523609548228355087656722055424814562734117700855413345010141117548083679080625103736163543237251398331637039720855791791410347115376452572337194968599819586245716930478161175618582179498432306428870417367750311179035767785253895588936546710147527847046026503527428703407628223950327409912577492569083107445939638242386762243195627444724474726437774530147627378044821763515035153274743058834335928734781574545749821375436467506750746813386891032450766900396169516086794531002954218444191597694289230370016009142149487383016047720753195497430548506033985472229027196237888960831268293415537520685653761913898027464444973762577912942253680011693879944894379485809726508473515975731639249373861979536555362559687498842688497425901043641823067731572870049194875687288567696153110255894436749749003172977743142084180941711735418161652637131283355876397626347887275205412998237784701926753943789109912833855346206623842269674308071056560564446453468637508497190797870451940398474159277596689025160492977673322599039062039538741637410328046458887474270130167591791876751898458322487337037855033672842682903908892928611426397914736215695281634421082198492371736756773858733304273899953104072228041774680332696374780160490331535150856826043839081150387177329459465670454818974397597457693662540618757220735248432898674016530845607518221697938404049545896772989358868825862093173466767109517416647427725005763203799982485453699343165842550229352761000727059306979258240278350166739326180251874338324047405631303123512922471375107661027069247195428791617900464466031547673897931293872905123681825452951619992972884456053654991076799911195522314879216193146691332086220473326358526369248706152120905555856352385356018246548688228100183700286895047390156198129710388297991101604735575352569313770766914919085117120788916436426076324560034945387218431857678009532150921855402213343894745917714842265080531717909770690052832380599459249797604006138862371942707423948525102100401117180411475719797126278612244661529530482228690939527295911329714834607420955613919962426987237466681265910252320008164300544436418596875149230690300690571765879509756895859340418595990367581084960691175649300461622339842175549493919116341673128095257535146335266764085299586558370888568010379995526665742573189648419135497388342113937187815325081434446067732870776956468299163679546854003694634116328225748704276790936052915131219350290138192580543211570659979002101679497913418968731679008247597546742641636970168478274691823235356224442447255525769444018542990673257158836093462312656488787580281755389240569038180629986895581196060211647847565013628315124177519163303855834256787970652455356959420776577983905898837933190665609660247282449404440096452395850249203080877013820148195353009234405000483220767272177392780473249110089746246898965049659683804231731216957563569226562069387858394690516221280837300860735887983096407991615542018146883455779473650726460276469969557754960077446741617813449312368136410629344389576040057033231826167083172736848025528030199820478047956516084077991045858181148966717007276989817062954287434770276563032339108443250284224170476010778312139946807664242237867785316736485113745763646958136402831191065120544860387658232797238369503061776405289123786319698084048045356848322533046203300218480898997661128270664081801132130625207837425111356737898855184356555614089738992098832232565572765668723110391004166754700495261669000325508932244004279987830307210693405752896598920442855747760366934916957317533431721608217995845135541868758198136501864892128164650582854460531905530334169937924590859078281855182290738864619968140979254029118924696761105480462847979409361936424299773644880566129506793982612590370892427326051173634027470520162276909595198388919332080559532663919125689493211202221695657433284717935548294582225962709574252534909870093083277597934936563288584285040726220602551750311066311263805487434629482851860325760549249892102235452035715050501116668542412391980259207256758338146324381763124800440034616967903289927676000310067208581602724390115872780043744880117925622938735217841773235327393236198892577536878449427566732150202044615109370207626663747866261610501013204573070343276193685779137774341182621970947821796917828993427171863968780149005623075550413845940387718458837869041636636756684469547710247410039460478543337336493004132564744906825051934700538461542581793534724855845867883456609154154871111289481469441518818526916551726826123957569277594762934220474882253152276590406748506922115304541533422897138273947590428610029785744454043775147895294206666642910956542698138508812907338515736392600825445866784559002781886198401261844985699102629553668657897210107478789926015222174945229466921778889861894690746751387474296301656202041610404143210619877869653099601745277141701063930407353394393929883217717139325376214635286510469768102516205441186667614454855261765000075290408970541577724541371253788186284592776564261378201803537979217973156442343641763942219858827426088344534931955004051310012885485860176881373780241979342818220967638760308294122534531245807659815024067822694665840429702818529842983075179738757861466191702818456288962435789045449663083955388824647801289399071521019344873529654774476759839512510666949570467881607934131314908038838650563340743229224847740205770863135475229666022493982811711006432998570727477665317068999653941604695564600867165598431873654115619512347347379854424507876182319007548449658762788155525270899667206909650656000124480837969929148874587150698802240213541442176279841190911600909340176340213795566644804170297251492622035876381378704066532130906932627016193209374576618969895401958304715197464251954218704288863250826081681511217738041781150777747764611503558544347476098700923679163637130164778722473493604499131136455167822434003668968658522039893570745234746081239911488191663349794410964645232272078806431959459323055377617360788616945157233016972468326666445304124273023906085821981895088394451465819711422895443267296829243277694931212425194978290019206098606302716674089212038632208028990949056088958796962770140214837967255889858705146735654825118724329179030956833556291971991096613718576315158132584346137176757907586204567355523883883652255854290678325427291809424204634312227361117657993192205865216881585504832725878146612653048695133010925036836380031298808622827499374475644748000767750896328636711772911535997750141868536218212463160904005745191203230960708660585199354471800940333858149783645258586629013249606077589157031080232943788710332671654483918404584097590139227919985361168700212945731593406921770630848673524453945241356489620114721967489943645965944984960825953496090491344899616432285377735150569241818692844460958650106012761838665881202584470051882383977301623891593601831940921782049246224135767045548304066747404714793007088079490561767702777294685456818969552342408088128065517582857795572888064811899406022468920787596060220094584007112403741721674187947391614887013940644418164629823914686555180452764315940015814626639593004504622512498316341209311447687108177624288482560760594961978265267211256634504716775469566159886831545160130772930650395406097503658487720550373812453656051973083075567101480530408087954643664600141031830407185761799864562053780518838088390527772813078736212103631189559113348334504737404752490850060492452470094954633140696477365880757932063359308139629558979694823926122403049400213759288355825292898415755221991261980913908594994763445476262518803242411856445663132255121537529909972758509180995721705099961026234954913569887474813694700252251561299990559242426025476105445033280066633998956785761504971383419533328222894282461684315975433151229645738687546495764336764514955475641967376066461631345130882372580575554185995845583739258125680244182451139529016985791434778537590325266531341912938154048761907061435066817004736018741068309562823939803772156096365019364103942070555831082841194769064500847932523169382448230082779292882264697381480546534301077223731919881402656809138380119653202330785369323250108795148704749447784834882196912158729015546155529791018391911896737390658149956989558582956907654718687483464627304091313037774079719566736732914467994246942469988207709953183675174546904494183299250945236764732095924527291008601468571125793905985877615151157114663551358968755593456320702466517108426279947504204291128465702233713907799469257892709446333837384520734863703665478054941366649452329093145810992661354410970487505229104983125989843107940624864641859445497717207206669472418435533189906706146083762099673751420458529098458439377145272580243380267005315435585136091883683210009045648397998742521645073975144308509420416746311869857735196388677205288548507014039052423421050877427145517534813160406616820164041261169680447201472668647405440928515513679405976769297717943912007958845650405337996689155209071984004952044333007860767745216510401083427090211026902938982781507411964239715671513924396128484074782842998384434810454640117110516086911789198983771876411662415886878726213206228786829241544138631393782885730933397408023359386504801705218967536534007143273553429891069948212302700538353914917978439457195387145176943399472435929856329890309777774711082551559154436967412477858844222201243743536633787340933468181181456588511390496956948707243862800902267744362677162287333339384307926005023094161245171496415494235733403308476817678705516216366988427064083771623558323519044881681989063146796719581850055294961535723124435546424765906706023568607876009550796892466409820533457056039500772621916600441145302703386059761577296637918913441837942196979901732890373522035915125473475554453674897509643669531309085207952303785432201133353519282396486685704450571482767403936639836386425753356090293393928577052999681817451176459248170390995661367889446447674461102742034478412606450417938237467782317241670294776978037318132654338133834446541024459883153915904399122975024061630856653323398285748557131748265754736391270236797749546301181671773387662460407087067891250453446085556259055037808807471804246183403966125099950598476166402365746950922764309246922915219874459690667095920419324226420041298108374219044552392451398291449268072277987127976344407716239166918154982356831033299060160468357994811456220993364916465996571798218731406216279163717533741871406138484422678115395519538014666571354834588896894075307618972145481060303711137250762614780342302068302343473265958423958771393259638576633474927747366329609585877461070906471015292499095122516013823841040836194704632982991889583720244644000385358919519344718521500636017409672059463483001999996006849469880634982027559574620839435152985038639252900751240168850564906496047578623613633000501600224459468610883627427562361874569656325157149335856585717404121363787932073777985839141909509846573498847964464480538733243381246825482594166248727110799678668659134864267113455792808819954920429662333418478466795880417505453715160267457759886531916281774560419116592176783105708774976122778612360474912594885008179304375194945306540117842561761656540862504005442426744589068523550360406878715924096579179648439624543671803668655450444303984902942245375939377482760737937989603070982173281950687400716777738258491469773318831855976430082476659725678267465168200079559539124264638482326677038868992992326707425343790807475832854131182566399225438319600292477207330630758433364171549731898011253466939451695334920805578777830674217004048145862932269512735680367207941986251546022203578581741419251534444387142702405087541376278434429841045726985447087989923982725029010473936094206655333686207933969061905867578298822251768702472652099664784390192724534913413274338992212623533922061367503827950943652099206729773369644518516530158085223054606074486282649645787273429205151987150746589826411219663362488002604252850805377569689611316870372259973319814015571872743675707103391798899694280549981974934874088657599343348653290749767012607075581817386969079678599763553608405222326893723087505542923794262063317130520764458102237032094202115683172067538220183728638179780033425012746844330267995747927811657012033498098842630485408944167866905729738899608230690013852623338206510891157318686906784080540853761202795621794690497744722016451192927584108867731442358566805471605388686532038737170922197326566135138588533945715765139591845075250397543659869755936786014378532570203240630917338713540277895974122381684232412180881937669789923246950690746879566097560550933752844117573343239172551629862586081176984363819268089643333957112787755930359684072944988155100301871490713582288126384697413345320036588964511361903742446893380651973858349529546336423807237354561205333883361511716776813076394629463987475493887853980766770124601574910688971045663633236054912777950686690761858257989113627708648813189552713268938022272402008497142599650865145093428457568070593949439063083282055047343223375489759441840295885893035906510784711549784099168237841792064360571709653179867111198379726172287080947902562728757375780759699043709142834720105972128532933532678997554393639807477901987334093697362455710229872657861497113620105989449347630243296188483043125979123735150588525370519551791106182255075048539837562923398928784166693790948354533274769401636579612519779595927032985850915422801807142102332582467599311492751326426769824222722823202597399982567646163926026545743712227226345063116261230403390012684079907540810030606238443746215885777447822522362794417016499314435174995290405560836619096756971322101552900933661929047942265648401166747122013642905702180604809777415737539465014024097191745467174112633047339261843737229701274637929946813230237215750155864470395005758728862816658523487874479721552793145974789925053209058456295535021182372868006264528601162780068298817559772585405030084295574058630668285142332351919135536751476063198674790891048483027331653681485812090465552445731375012740277925886202345519726047476394836474703363494512951507491319490668280098725072912009202622671973792067578080913394064968182610746329496889757533720732399733085638913052746914288706724049768850982671076248764052997570845670850979617914836653630737824601913738413965491309880240851216975318080384498081387488833588682629519427811043990381429277289408354993098748903025830216934449836422285390583864485826219817907369887774400028047078884560639106478945635731967044983389612096283657607710181493577202851685989714132351873842859023473127257874432269164723333604742786009033457679288735182275640168293434399114490834379092082736703037145405495755100598320795498967418444864093908786177334041981971922205573674331009713626897335038843922778705394215517290389484828631381750997864493601809406293602141223452254709008786094507416920065350860213588024895706788537683415758228272316137012722960086195221927222301649998937012249783870281169564462569080649610971492590109786304345827770508012830096622724340165488785466189070752326792816261902274600709245165283117072026537225502697649373416820441345834875501666432458429935934741332398706445435590414958642850980004483315266338712643010258226053290078295477343689563003389304828591404248092813699913595669255569698971746933021458926755746148297635875649352744056326750921525530851058684193984211789351116648757879786784026335796708489612350125453604540302537677575096027385119620465376407491664223532633966607246505629838293722152215935052829043280206716043172558879994683997346352154980245071563281780107088074774221259490085597479899494669130161491762947121021476365832932304975776052022066703824683756909753712837226169611074381140544874469035332911531063613300449802601474303801558129412256669830957441870950324967007102536046072920489831946625241012683757531568585664581039300893223596149396970191549472857990292901552692262603117648542466405960129013670593364556935352311275985590899638900479576835426424601244609106775121527066137103891644364652833471125166284758217815885134162163989450225084693120728079192444676725116910315085799272814164742991801652934536595271719853763545456601848936212679238110388008746438089756809197709245883475701210468087065493420324956338844157675374727452809854441468322742953891983682003998382764169046690932072196506296570902068101843741740540504250960985860417947197528555405171192003763113828679780139643677042479138647774038480844285904862511620377411992950502276137734508148954489695081561496268981213302204383677118600271835091991944850303253239446928770230978441305700883080005995897456256191241460549005600564344621645811963476740741181397525127930059081580593754029569501012188068453700408995890273051468996540861572710007381179707465390599315683974917700542016772376083922732500939923916731766388018872405024678567916430546755360180072698498366213457140589533693952214370800435432748806036940351813128771146849205094720573719535064457644306270454577976982891511180315826749325339162861773456995483005184309709034202728024107793307941482849910198486991408621830193939990255328731476370146480528975136252938250945864528049766952210237597942339500093085818382615381570126210725939696995612418216302944507225955608591556540296596526977354240615469961137759334750590436513987444650790916594618404440930008824504111446533305377576564215627818954662395528770296772833402254017647371268507111165943979854137189309991482571380821474091797766886964906110670710601005562200289999850151285394123776972682907952008005555845519048706755404462239337880088871611311252710341448933950981707781797288036021609790043905953018614691858603309744585165630485788409362751925155380907398874767658097054095396633972609145116577688563454665121042157059579240582192675487772082475439702424356717145012631737676494595342214905793695989974215814574105012186452924240810617857560936361626426028734794935044711193113156977492085272346770758311809151365973635196534599493283222005236250337076712607812873546909373869858745623922151602600330639268256397977140578770365838215292294967301286269192925069739577153481745090342406380371821803712655927825044727166828770518057834247991036871368661135270483579416793124375875053112072662577452769815022372517621470101152446547790901893393379024807925504663031677181828871009954360650164760076432691377308593877018421567739168524666314038418991729165415076629170897834721660560475077520100783967350901084116878645347446749505785916348432185998291346439868368119180358141572462409104008960935435185129269367191530222511845342984967210568445692024425564501533168576977358096940737555455852370102246957131990901737898260635480403763160639281924409885778970379367820310399145596602978105874354644097383054920307404938972873297197215026453134897542675146631713995401572436834579834582611310469317023112369642550031304166770983195603754466611293263432773157492632155976364694657923232394560106118706825022307474565927816511146288464502328711849423239266901462493049573134842680940645527251523676844831291967584835224849858123787722436681177746606188206411362566741056382125083403782958268840593188845178586008395376650957971205487788648880850837709556506848609925455102572499678898799325824483871469014083526101216365836674029082507066533988884774363161834976437922363398868255384503467282135606387470101370631564659610409333056934870771124559452960801108741828723474379583677682356660229087870440764155841964623222307190708626804662198131867994087080493417049836583530838435953066183603261251331812737120168003464912476083527312604138507725998600155874316077907153339871671213088522292021606203968697934852240378190722849035697891556768853984746164043840526891360699054229124047748408528664933273726641648729852575929733845553141939242271892913668854083246375030483369779037543048487406090235538196426851374663263548669171213598073138430214418355379128703200943426696269373408681673642825581515351524406796914708860887931802425061920726780193406083532841635586302425712545899102359390033121924484606143594802227831760360383820240016131661841664030299730017894012398656312493937332142108536797106085505799493664265791823719442343550388299315691377475162246404060608562163919535052990156966080124275288687462983672068436196443944753370856045166765858837681903198673754530143674954525701570811663518820198050655224380208934982449321181455441583490129516087721576128159950464375650756105529537120205945405045873625981873333298721993008975486858220045117156178922940091246582676567917867884594241329596462764158984922355772190760209271047414694006989514900583147703578755246642026277408604482375702763369392399473433622604456250858238426283956671084386197159908336670192249864354433957927636438064917274264502253838102188847029270050907842491619799044326950666136267741863911198036469963488031101207361986145741258022422080439700357354665182881797478006886518027343551659219733747702571872426147730479790182738199300070577780023133397361276951364763941494727778138691495954741971956322270781285174159728296425540747027840685866323605281827430600840970826861843196435692685073698733213046351499132395832317946355405765048223167266056630388186738403339472369453563557777427739082426696530445696286103447907242463353238958792600224948512294656864803161944871367597800692761864226827143777896369466352061191425606637370082487680850118395834296101346249118564928769449068150737943655186845762689628305549346810591661738053191666697058137034792790819436051184958000649347844031750562170152259327245220483167410885037440978020313192303016008007960058110495448297915249598507254579565442698661189809031898638255072668916650591415872270893904650164786815446652145335127024618046637290526881292965490871795430461648243657174342544179981465161176279937948684715853618997817144224336048113527161838949870934328245053345293287005658813352161195528938472389272768640873290711954173622210970039780479901345782263794834313693870611276401145749497763066535481947343478229050581583707999367214443254962172602696296370351876479326533364863981243440410329326636157226743847732154797680663104394568683572389818682444165998460505834335115326695428841355983749831052814146804715483226643242280057265882797781520120306090750788283422341683110531547070776070145387313249643578791030613321921971265255050920020088670046613625107899059111747433539114152616439701056101735369825818652368708512075298803411726458101648215297660319156944421956548014713515036650491565038377652735673223931870202590898027685747542538767198196932279781966361307881108627549704029511391756011438922247963499411335322993250658221700097525391100926804662472290152066579986370752606878850519508292424350538155439702785702385086766901484637399104933472447166380449218622926841520453321822740299991326973894785450392008155644359008420643634977824701282675866389512887867000317566765682664282147788591412092818302469101947788936833011665469787324748571901038322825151980814137797208007804665087119352038821364301875497451460399484381764133848588754597406295361344166617500790337756299513595314006328736772643438242896043651121124456089907708185596178820938112593955025196605499237898678468886147147381945865716984759255968949385170421032488748522026798511765436800036078666468557221151502496243415783620218338902548326830307027447502548747603466011613259327721826378353724752545214467367551998381323196221511558644912887641128619219516228257722962841215930785501048573723475965042245006373106104775452565945762605373772740511219974125342299600432105221459801626111152307282887737642078376435698686394997504349234403441490562055519873597792951963581346156435247281521241363389627026678256876593530362883193757434284757442991336646176784409703782641186630858207284280779751413346566748816112872632043856059067915057508030270500216543137371778240182456776744047001712223947489838850940505142845568650387347626726218308279723911586968097503983716457535451298198346761771028740496204040263169240266402081829407529621456439953634177798913994649398400625281271513733058976102090180376875771488995536312524562149303714768874197185792493194755985041228851401572529710451636141661850676273016198314121405153155306691492961010556124114960231746008490275765980038974696139316503546697051125086473484248832635146191704653247863593316318104609440199009975169379024217804841440966580043742483206850140916206951681790281437532395057795835268317236356489996540091650585625805905540876644104768212950018352518621012461493266110609155643735713973705276107932758701361425786575114533532696412653647670854110808085602280797501959865618139201237811257852546962013146022801732324221425821398915936492643159097197920910052320601661587763363734427566980429391666632495744110411828929517831772223937705209854590662648075733253167030349231441409273129039898930942431398733818945691106413782215681707085253442168533367221728602997917014468692330191213521834651572921224279816008310611127449863264960304565260418013359337909990882563799078542203681508657755236289240852335718254635022584564947477673597386110272598059022635240807503271939967646433303901116143049814143007419882648669497118806757630297451681599107980988498826320739509433149613009249778215904857797316592640276713897965840995590372189638852450496249799077600854078784881971356502404730598033482805497460999933545886526031785640969074482462781051073154450284006779577401126680202043595888137946753187813992179204300400694324623814282499455307755998377937381778529515930196192459061995592997168597129200711370844893232721444262787680819979944211065306689139896668312880003989124885357270880010583070303080136809328795954765753556071266482570942204679442007704732955754392183002500315421118224369417342336932648435379042150061474326604938385623429537100736469562988029757890040408116976580001601497396554704145158026446054494887991059330931931760390201064152746943825387934658777764521048940982596904881086146535999331978796412596720692892477011794861701353100010532538508913941987063690401126765318232073599470235025527724872015120566783767145623769640555102740185899307467783473008800508583254378436410746440229435124819825274755020790225326710462124465966405289866498301451506465517526038297346817367466407389361998132853020358665986749376697397178931851289888157087777027162594323343091501200348366096252061055842581733086308263648967718922290676083288464026088931832066629196697822264295487476258933406573402835809472109468151184473276787929219863212973187223630238492290789246786211926684893901015995792829190904615839206078122478313923156256120008582557163696403627832474782740027558084980874135476721518239897099088691028476503812325457357928598896993283250529614815598870748646133361835405292860343470330945542269615104106080911285947553711701039771085525211173758615859233894085412287227207569997812620438089034476199560239332017989985739107893323698787318929256201972326989604737412792002645160495760779650184768126376982242928267295150361393040482614123500578333341999564660801440245975104585976638075969795503179104198830688909173394760473639314585302489284884496952279722536412317201231732634738746670971933614477898314683383235668218163965221380008467416569349882857312707333462646156175803788027130639800495790450050400017960463391641163022897735644366628280800831959230685269338026993127881228207048646165609413804071384304226352766803034422635665072822782210962921020550277499514548404784208540783459033041656746264733292254901894674726720557438267199101974169477533581873840474283767893317153554379785290165600883157106127426218835467399596033592235360112959640959165638793969206853193121256749889072504956542927003268467399384985904107154760389416460114479069888359546877966538575300940309031692328460527764028921925337490433819516175405678242310387194361445001165773313559011335624459991222923190891717272095323389566776610447928087587786239167758132061885236778695481165669456479476524859131253589207411476108311946271782002675388752365704002095282575564550306313188218659933544018496574024261675534488182851615765323065476421217843544899300799169534039931300067240667423666652540108170162338487019274309339452381740609170221299564003928768651725514084482169015898107364529863846244021553870892252140987579518207570605870795805518192247920867931902833163958514859472932530284380181606457181798758733458227925064728857238815535767812104819672815126576221243448450220578670684439329195065135144008853027248327187394029104485490564642968170273362639953681662644343164829614490900021017488292110310311868382545396244060757501901741729592958304890433784814829978319883181743182566930930027899948357766714039387748323337540621141063278625559101793777122182295833186900639789867264432431002869178964657590981522284722104394370250028149857514128807290714581638327399782767394236131150919858192405889170022399522212672250090778127278558348980594763723375401926333958243042048696031289913881109184814481303052242336398539365622813938200508258782175491346255120510752616273204275744804747543251176536109677762039356633989199941376263878268598286292716156512700712889740570043886734305555746189026537529682127087972064356103517855559702457111293716685641249655864151120646249146736429636792202845666241233051686780476596025534963843940148481184119604520747838906296577357163186028621528341528089786891656144009623637309223598530861855408665727851214038590542988144758703461961638526963331069140718161078243283156089424113974536370418632757022628381844595883962551698300859127636565205308603776822853662592421286470568637852514629346337266411275698609929443441288978805164838655119427138694672165874212531658560899065673654145915115182934400123420536173129476695379671698427116992545692304041431055685135688920620916664935428713489229125050013694925944961542725291249292178734795076707895694412191184548327787693055494891944945368975631381594852274310021775172116535690553157306320086833484154355713389553846845789373219766146768178937016772877963837149571166633489179780358141556393979788160255796665474890505551669971347617041003766472636159112401333550056339357646382981760152784971329487594805692226764859044499979462525806123590964005781881919646171284507930610451166368860087665325595511409238234169808294399711338745368462075544352159015104936217430306794526975879097454396197243852968798277977860081565052376896171878338127111581685251599156176823545821510482649046526952237132005158193798586539537770970506490836858169543120660502355141074886072719790590962314682646552803678493746063241591735565148990327416704850862656525955532273694241063184360485961200543910664926241890490140585973961636776940430965749829973032598075502203970765568487620747018403193586207080916679029803656259182755109953480008096163575933114955298376040845980285768869550935308906725985541470749291879243855086336506619214127985192180357727037641153417261371292957970786995816217802287726100504671266850885453055999736756015278718826007110675718524972871870472263667891439695275690804891140848868829273018055286456491178194198487721815727121721290658637455489587864251671072553987577123986618422808057920122022553009053954213054135158649195419342582676142286493098948329131180171593429423026440148244920715444614397949634953365298235719270268560888811555869610252383460489866205646286745726862470094225721926289091907450182142833495667820231212715799648936211279282310554437775235374658004398479462883510422583529398171605645373370162075857307769087463598249369322111133597435896448207543942637074120629278743078133778357614306415491547288456157366207732700385555256237537848604947346268844247764231859608600472697748152884546296054143046788930229594338525645203173993394358424356362134851887866676792454605511366357156727022651812904642259195684032670805813921074801292076135068788870921795328066818621855931441420683866647929056708304575400154936930973596705850371087180598316534738194483957564788411877648879743188464253498346763480179030814807210655236482282394333065692991068512782629668333986873486831956850338929774766645579522355491272801691298912830508246270728500612262239678335465094330066900817638935785136156718709708895059819847076259003066985065639307880459586657937434087635701375305583678361404702398923579158515124469968795258621180174710231439745787905175524596778753331581399599569096734032509431559449032126115118336349718798039682415468757401677726647687494727470309379429986822181004969496311042300132445191671167537166154666943626215575709127066987965607532262706243621855261513689223541457887455771148937769691772531864694334274894994887904627179953508950337228596864447788780785897530562401327291013543909277732951231962387061090328268508552644249739557789349074357428461347687721146657574796075442072142875882325328924436641596187601661225289399003937290175904217046796626945353101862150092018782414986306801232983184047871797696953636881359497288057900855433599866618646306009116390555848289980716187732128823388958737363105238753305128192985504566689943763913944376836251888722604101851614043371171590382917156959909354337127157071966780275008522155211396381988420738132833719806588259590985550910390712524902334806878256944197160320508849605157997258232541449812221773442441700167124170228274550994735233623661729199894209249146135825684526969679810928280036382252008011234223230531533115610421985074739689921510987531398906991234252956275290511233356531590739010437168808628500596001099820473353598101773176951196871276175029006217269162607682533043391215861475393589856259637991098831748070674424367618227592705265513733670127294747027219162612735376134986604839475004779564553120594650731320362232034818663490508293049319554290574299163537632836659580975611692495927979582513542021707938619158275993786690686928991740616240515462299815989713700644160872663775367707019098551090068567490970166755829188015619627641686096756004618146922138846131565178945093848244016112218902070031450541708681760027005235119130569010679800333139659715983735654141223317123554103582015310551996790954217262530369267334613500815700307860874073433177763617268345952511621541138869558006875648595443938859910454020738019382074969675724228988033823447134672977192001819905308349272454624041286125251994812196016073539403350831404099772002867546765840641393146222242839732272503421684366038739717984992425086946087929928682574848262135598652703679139960778413598584269749304363561916099199119715184334095797699552867465891165172350442152990649830388477264931579544750692965703380887333056204240082142407023850058601204249445989346580245506777591799066500521100840363786040914469235476653455275164417278501911056944849707795985149195738480554183373440323661634630959990114858984185976057847877539423669295456608940172184685598429620992942488578968511148285690091763416457064347886288015608055740473082026853087053177692085142305123919270705983098446427546598747574917669730171678042992574623107448435369399525641305506477151736586853908899992638841268277394951639164178063070725077827681479156093033136191226822941160345037613106090950441645863046557534899353381571988026759380856770794302049576538328842414294587962689721832325119311563871844221553115902176702588977039842896809631551590828312818813546938514495988491870808209885679822525738680290247847203114349793449668189570325455788122030882668210123682651941943510545533808383172469239002519620700072517958841195571015585339741988134159840818783942808077276544822841756912592434197808096130387777968503232312928453157033548481217030884890992578500256421451587034950571025243330444027400318257398903117078974520734097324584503228565756543860269197622437158139752506232533441860457401414006236773026377248303490670848645350573754841354290204284698832371107576955209169505108286488026649759928173978839703814930839271786560378409573888521671126103600786159385536836353346085128033146667106077162017761662286590132396790087500571804043491289906792164270543120435079033323461139844984551564690077513850344937390689527074127730486331446896669848019936428109381365148675631808779706941302326038232266136040474375238534246380206635944299113039848593919804579535824643231039369252756899706183125771434950859738541120428448001665397668550612403681388960124545129479921279019770688516208920761952722105087435524365469985840429062436613111400681319027819010959295436016555410799995836364608824490078189667188450488338312162913214944380041457489458138027319999265445408754678008922196801622586818328950740273637946484417672022729487754267617794114626437380059426102861337455210278689526305347325657801458397634244839046146156265336352566519421434295066256692582813562865762645673910175458184200286728412146519030553670686035134342481241460728763562160903075290382973328858255058589747143290862904597235322983438493108785750888759975740937239236980151279580574475897216352239353371954069988369879649781028730679501388359487860416852222820314748891358835323618027099211039144174537614680198684255677175828674040058974279732518411351391851498861115960190667401539612999909723640101697112103491903139017307088977212373110679021368268703225868978306560478383044152908585780797794219414738015313382194368958922589863825807479797839522732918844405851418726607841366585391617229324842648112036998650231737188712587346124737823295482668099958469886203000511418142586234991142529553561356147027420131907549583999305368768978894735524692818599515674208812778237815105610894174547514574101116637780831146132106792777216989095856931668088165624207460405702747632133591558177041732965939439316452961798067413502418741087130038136769331481531552069438841634986120377471371594137784369025384982781396452125965386057739973198586058984656991709529885860595511743580519322148828658934254045541744266148871100978889089715747742542320536682108341856254871669292647359744512683428750217147260101227412245473252871191031580298814264157342373122082680479530150425245490853955238951006209960278330160369876587962132748820975192543837532719967595870694275395974162848237629925993789515075586304408137067753553704672213281757090777513119886012629064794925165280321288039578916747439183476051010022330031200142032801210407947907034485818931383488040592584226881611141206354560985416813378179282681840063033642237761402639627139195149291399888655198699879530169208730534970644165370443556161105386153201174500618252787102881833091911830806977764107520546432804953646353911363289887596364523857703202019777285343039567718361526632134785757374976969199378189055246171020855632709051821461205548468873209994800731728071926690514159958042666391551669856976778653486151700257517706047583168641149135513432940892972058495704048511604182400113827628541210939052582359795283863174336246538379670843461409783891058470299449985707164547174175078187645735886867593744491295388386118457983808223894371514814325289822650803313282181361088227534700031528311643104210802441443297474829575975500389994118352276269602212312914786044976525905588092010375352011986774982998518496833601298734473482304102746409409867877228153745170442223225261582378213679661268339407827900004783358122432177375450968424573595896966629589389130019323377295152569116508454631083065723984366160501626852594183766971929986750623758666734306376528447767115997149827740614263391521370928571181390970519914967875827742391900331477695726450410674061441258641726727616065458689678275381939086463710733354220576354228353463429966005924006689688417575302915918577890467791682371150970241489698314588041109793918505298310930738512817641420436557909475859386211951127388496746534036743964801729424953693793836393444200162126998008161194344533287911593604173027076117121531589217997473473765038741068062199195209217601295793228888414698182520637694007436162245400697466358370827570620258827825223482489847497332508415342325607484234463878067817131105078418631966741446953751681302612300222369729395792001791614469221588745806845409978059761436955454558335522917615905116188029780031631108647681995276494813707791525208029448006615160784578282332003086892694066788318633928970262140691376298085178019243121874367454281789319140384405099452947524529059042615652838094800978092033768362899547610120040254228083247775567796010370553992643447042834403148267721725465336458780672447310350663261010634767575853248096720671512743872474792015733714796044717367440823839182473143505880344774662632650371210561122523764554114961918259349513343595502490673936607269503232557725613576712567080402268100641987439179089923169263466869937831259222698265512779754151280629103001705129319144379640762404953081836959761057539913210892886858325867422408772017458497160119240554926039440816163782506449380342743287026623338939427928699145425219644521263734782087699478660209711607648469058578331883890456882886124919147486060062215249038138017703506484310069466749890260415019942801158581997568160781907390172957891734915503644161238425229971048350098827409421197560122728850588921860459922254790936349528128288085946897286009076324571599549909561451817173315028853255144019571470850023469530567487638997655478884620789507519319883573163878382171072872161977473138321104594941940595692481580364503909675941821595021411163905613836763699285906302563769387342392854075476442559660595441271870908068210073791992008715324955282413582987408658241768049245400585949218593434972852078007777967854488002029402544395431434966379316661048580698791799866424415968510780760561650249022825660830952223932887393091567929707113814844336802545453404800166799895705249359615564752896837446683019981106258451017520889786530615236528863933379702199138378255079470027941685073002442729779337442785474690819681460492041568106691317183150013885202988872608776453741735603841986423149968043068358024115042086744597400925330658800796745815998101490107247709733192996741788543563370001653912855747898406606640975175641539922634911315800653583349874934564299277411937778293585858707878256937928690359664565988914532169850952728352970694503144575694858998067094837610767724805827296295332295822649727412063528526635205458673993551847745266890460283361281136814464384984683920168904674736356138689757861245903340348593806973382580660389377250576194379231107402574833463102801230789776846219038112047372552941235267216350679749524813522870249844246433294813778885994399752359234432321891653513004386751758992141701751716329981312464986025075459852503932806087979586667718162205073083417036901157743279456824499730959086193323238160781242314827848167349270658853008920460643001228582303588908031413663824681283591621656759869776408453293747910281349951001351850838337785979002534204369845233680996700632138829907487612543328672545529538333462575877541813184046213442514988786256825350740509118952407414011274552608169327610411954240053759867760471309747036911553050513351571556674305952621618248440460458287513682347906610700153285812253696244415441361935951185747473427374496587390286511668078777852994210905977500418915506529276094293570217466891480530914554711324290520721631818099433988780093723993948813555130810650841058181009543159179376288131032964606966162019417181899178249726690582007735511437786131435568963811245134772792480951788309333071666055568478264430979782130703016165325722461318778460336651188622230176541643028804757730145536146202055662484072519776868607195717873655344738586759888634925129381918918713476708680652824479753633103979877626449661416258703345384704857220801467127510020645950030674560002117630718163362904214037483799070018402764514152509239484975625120365668079515660018963595009329120275372972151689034187651579644495135397753944790729575605965113255076562879121056193063156975207588395264550782429809502711755923172101746780239642835950730679766723835152077285355343358333680945986259673106972875392466288499010840421622219077264327353121326720988882719513846599308801621352348922717007419576348040363421875463852815860609723271576841983480622065269205794523004413403396130916027780318100038743174796071632177088812494087009764012122790833625650858727825067963322789462397378588479374717970298043533390922629184523014722786728260506908154677078605903145973326835020677752723045625853668262789221120197028855835732089378274616008894206604192907561176733381830677362203289305312475054550038043374347406889943937848990999568654782622436343862129892747554088511192902806800181104107817304026870701525394309652686623097516494715123391962171367463296854733917688402022700305176116134422948401090806903900049423176151586718761695582632031155811903809721911150402083675491134085388043585575166685912177232438551273978814549858822167886520688804496413333265318567524690084088556327034921581978805036533875011529733652659414013021602562091531944565811846049173899125153139327248734886440451810239997288364263969875356209021846426079336744166358119324287109278325875652564722487122735834228572200055691870415201517645295960841951477907724956157654022630379979367488171827227077366651221814415083617018336707251404383232023761413106284272184334886964118991012705981266896433328873291250611937407705196480499025009732146630831594776597248893453665693045464721267280238228357869392852966756301975146959536650887213184405589358157056416127532377194738214860300762449073926118675336521733720755758803570495783777941987555421508945398828238291062399425248576041204713027603019626265696796453123885824233805525259141164895189728732426767064193172253746625596587754363106682131467660523375210848410791022366218496400253934127196963765358022534192246642227293815746132219165781910389821096657230944499074649110629783418998026334938057814256977608941871275907615845885774336500344651338133166865107967820708647296428956095778822984362487698151037283968196917538641342431909230723310267143001193501227218619113381917545523532415868656246882019541979692788511398575190781652528514404872351926332516670588733509736790186834646898883964303416813287641409908954322013153888638588919555114005443254198060415357124795380548960210117647358145165833452597801355575371149264751496890910393875787089813906727691666329565587484779947315040108147793673342082209971971827879507242476043594499311453635290697639072056118484652688595777402121352108200855065442178079733082666552726217415809794752537471889467775969610552649691874023454108505032329431860352095977685230380541736095001779474906615538612342610608854241225386078557458594708376329430952242476007555794403962189732371495142785704873327432825526599886459035806100816190999841850277921167793288300200555463604082955508874874255706303511477409336979858581556339691244987610666981423326665205335197720322526628162259825245788875467210818184396480375873080712005661972969903293287176595001053634822408579082028269720946795750848717543728400957211016996325517501755501260644572803722963284120932399959360422053812056363924841776801861406562203424401784902050633056631009950965615512132571683307422221305996693162517471291150858420757567957587070606052357557522428880899494330976028193648705731088423668972847290035208698156343109228499796042427119594676862114481138132219497788368564613860966575732839424418709870789497181950872923174469680238509214428282676308758298415244004823239858366187443731400635535726356113981248276345919045654338070305602363493582564712997151903820251217030986661276670587405443721315668396421455648279509357529292144172005380951089714159919948694281487291000365898132197154957453808569924769402450655740684784377218404570704776843190843348783963971231134052537702027808879044299095949329107403014115663218541459918258210780387088243663219512223339565924017034234723198322359261928119850200404269054361540573323416181581528531465277082302086709521589944028860218239136945539558167208015967617284579901343467678774271890927198724980818855675099830283511348972429412161312315929141838662578837198026352858852652368366654345925027430473693130974767330322675811943617445101394476999929638956564526435828245312583172446447813124326471091928914683752860727754326177503730495271448159413491461388376749157469738805220454356522815993275590143343028521650877044999683562131646299207690267326161442488651675756508018915153460412058308546915653333737075240434620938249186894870161916518921752930371387867059208408916713653578746360453153341775782765444746754264847475856400972106192029977575599062452984364561876730388420099643046703661907255364962408879525875126416964489547438341715696245712967092563060038208178850076261986202241277398648467617723335935686316840197244956413780557768947207580484340764126277866091490807792217579253147241587813784755638465116679888785085160473632555376378029868424088293290907121189228039160109622546477823779777438660789014297875049182008228218587631567275307421643141460961641901910336263752939030521077499199495780499044972917054981065449775359526744873054980659872001501157138844868147625701177856510093475345717684129602620168828224363891953205641932333169580901118875992525227907658200262958770730988908853608976401185615816907019267293840934014438380490002892329491240533929715905638047976014124476024809808754204413542588138495059812748698997406897374284058559812748116194719210295884376586170334882155164539037926912744949047561244463294594590517562035980449969196258123812552811852364783699894214576684044848884248079914411441170942665765759871648180968571429653155950761050834230706558206608667622837396565272645702869598783466566718227457848598861384706859737966543000624600967627151106878923105418788088914821640500433933101977270605096768392096383392773560187264091183614869279558475066071477098276355072825909030574003027695620412282067702448353735464225789040623548226027093806476588801312468392452836126215228355130107529951572394670788030156441876312742851460272312275893773767935779237791563478226264434423926343644885543679749940557516497618673742902175312564667373237177116133572759858652641844560939486391555661934479998974992653708882435668280916942822471558850132637314109665885844114540320827097866941045340085731049415268689127546729256675755929286862520214202231412006844152382637938271971100707555014210795014635499808642723311127204979346089522803216998234556533858508803940079184653005476577272355112830526352898950125331533895753279469855552523971307872542831587231448600025537055495217236759387468679915425456063769569750524747298543326488348407954593381400781918340563040429818605853239180121850172055657799186325995331390021367634131908030758509397526596303388753163805775525811765940398417690676670158445498311211493043137360007540861470199394518468190788239772867457275916397493184018348028044246130274179237014246001194098315143896311675963993777718837459849481544299583384134514764156106383281431844750403574119844005979545355170387903990823218105976975894886757365342561100411291180610010675504803693433173339223503965545700333301347506675646312541982660234656132921672189780708854147883618730086986825086111867324731592781628606179253615968098673883855323745652990917067930759531864656305882889390715084590643143330126529646679024851593877380481306686703611604958931753969167228205926389025785992155783371635121940276732485415401729424099896419354012562696505509804046870953982047989220874200319549834234601920269126361228578407805331308026906587127829742142393183080386684247317200905070019304426277001373102015304490690536992638384493850096233098913815961499417594719791498550539992408507958687249874957920260556913777960538543402979835366404205569033383980854947244197983304734432500517391285800010418190608986498786638021944193057050928277286890179111418038808447163336720583628865366755157250988036740778041398224977852525716899196070681078228773747304296733995276698733424577985948665031196655956206762619643441027489607159101286961535020417130888682261809121423944876793054379176041904082615779479784997709649768676849814062270743754623061745918081068151809498178144240633195165579968454711052026489286976145500386636072665893503211483383415219396515182323687513111913002835217613105482365833953385812280751286045398832892453547268190237466605737869954835942384990055343805055242883455951888727188153128829767122889514040306849485459882160395351193566441792788433360940358629935212294461161507796603930243670029670356230290541419233528442016280463445613192782267728683555976735467737911979128073955307069958870966244928250393614292775707612845519002614553593917750655277820142094333937673585591170954400156316564282252565393078811531323938746780842201863702103461945720379372394152563590795887496231048184844430175040148254421151464489356636595889874788312869676725945992332619150444634360968488260328327457245363818031166651050391903559174967585869939843738239321816967282002270281056908870130962244067079447343712222006005513493448773281613837284492442672783368252298498736807902744666081054484544729512375581066886591185877200067236400437868548890264414945627200179577285892188236967293894735898380192589749022206982618887201213726526442148333546397669868716222500460610653829415114317685394768591800417783718861696722585405580099053879728353854509845459831476958151058117459223012889787006819829568267683727082083540779420535425488494110185150612136733017207889517427487744777783312915284872747895800264362278474923294331719048683591753308602870274394992318146754079583966947092165174031869865239647943676162358567534170411694419920279827114909615084852784313979885731224826847610461414342005167170881109690672881200597374735288912042600123109255387970347216567523359220836518465640684499005592802065505233072348095379334052919926230844420746526280902084512266601092108773008727814538937676016969936722939441408352805446895566544954874362703329542024955690359689665164315810920354300500682214841289716562133639838107085910932735601237705743409455523658801980423938796725623812824974811264502604421346399707522820165166450883437507083933693868070658613677417387981688718553034746931207033580250886777752576251165170957580574181425469592926916986335562967123779361846418227793005859986418912923974904236890514801183998732143807805212569319994083100209235122227133941569760991687106991680176557780727150907743324542260961096911710005356249130303568191316096460572244700456296082132774207974951477149069516252417235697971398335240182883388308486523790214458758570375811540987283487680519656962043799761091044459556563683392128422394812834295506445022983890818837046396574747236468521593866565792837101963629671413478904290895752057772455276181640021375833285578848188041363757398317420688001512688106686065109638185422308127661247682619041222951763471094193229084117265061247094587555411590458519482451669943654691389395388318415560477743526545498711095373204426042903423479318257501090755473745148387509083241941889147310440748565123090760811184861849394431874216182269508496526369591243138256809031543232053114859775449750055750147018477723083390800790977659939531535593683780980300993964793525123065082940891783131807722278874172986249650285738082016450013247957788523290304444036714925006865902272332960842611496686210674574767111907926545798673651980416573502605983643599409211000053550352030594542169891004212482494188537526651989048138273200649629250533813576622379354964975253493578312844303965936402411467239054678637003904099893601763120022408432410083810571411640238376381567163380841541181332607267962249842320975333898581403475534457002179761959585425597873103219443084170937946443589373422227003324657542672515302735440874683301768781967743930433028650486641996099893634542084025972101456804052749514090860717627301369023367424510005776259074767311355115477022670960168129956851664183931021585998285327250058309320757896008935933682191398595889834207458989804271177916546983133041682278555944545207072377290718088440139130944936790831189174154387503034456707615844103366684957602041849516621273356699876342763991580422846716577001460562367161594925816177082784673719692058871390496703226540121755211037504378630083938384089550683128958637201096457943920448170726663944396675129210902758918174247757676628537302245879843363903651907669304631503493366259288387061164400387106035990536515030754088854749291927688656477477878391325953860184254868870362658695540423939483941200526439853257018787983458920041898262575605633573632099575412823522520107874470090495499557699072237742820515687502287382609755495908863184007314355583708383434234302068027142752257231603623454846546935324731856573361048053989523406549608087138372388701758696500406062252198995830475713567168533502798285924553176415509412248424295995965273310632659414467653109420156104345604412077183862291060264459819299880210283733814437360129311907315538196524937420086509345471694338966642526866765644589244893239946512851156069653066246949334112822580928221024659937983033188637390809962535044534167892713333482893914323378038153764065037800456580981469457713812039381801984178832719646503681837571983056788873168965049865034065491921141679435893654255830562840050976471175279951928368675865755605005813079475463886156942487381293168321212448406471027532743768557230197939078454390405919862179297677795851304812962391204554394231809607942424777566242198809147915699925669570353343500221641476484168851788845489027970713151334788077115718181309994913241427754312882067106778557123236275505586603179144574629200704970557733691275965871331705331644199706680445876900322843666416519160195538641548051859469309376608363445657168039954238217530381098489707878291215051476998010614390414676531420584702737532453267049328749645901018016215187495901462741161792069286030313361924906084974145563689241913906584217126503240040651856780912784443302802819733214951533848124423413241700245361886389498532755465454408744286892993873148833059164914929273567175536569177350260696193375570692254070079873477670348845868457340551776604205800341206634368815683882182196804294837604958762956202369316662063747049476341844475552507683271343204939232816977836119814200821158635307473068884949523538468059234927083183350483925692634680139603322533459247109076083370895798386181973101076143980293313614131481606919343673923454032767703791756315245460758921203932853461630239255662807395139728696990990241752136209164801705953282676208938913522262108340868728766172232882447057557080749493110094332456466545113732619025420932085020597367399164871718465919582985539469541413413109726937750496954912595641812225670092087870108275677454477818093323502221949984193500246712798583245628932038906696369509218520515339632743337277259266625747923405747714612194069564485266144179069339857986003045887228018055163049789909477409583678044647891530227630819332477031851159107041567689081806403441415329720371938554935146144038871662258864552512182862148432325231673908509388561168079490600349156975700575560014614949694328581336488630429835963557594908195151354082096712026247501260340476348925882668453982089823044099879105566695585988817532903144224230181384524680452250300974514071982860985194324930064611304123318730667501299689430551349022816303040107968721205483225654782692180290732362553570915482343479560767460792888080342360432763583785931385973732520349287294880238332912392050392940636915905891298072001048760650487539808510610544829582437329746080582513277613626171217789665089676732490238478497978477075236987903573320723724300807244869098002361852484308193197444470847437834191155838871074098323057437376257076160850370925064068343896789585121321481097668075208954092068442008288766347831536370297344644160380329794565452384123657725060827939117799694157932576294778539906809651526281379493372374817823503330435156932590119250446064001134010640032347000851398590170404146423515555967224983969061423418813964827612322230446358649075258552373918001094088628728719985911903204168076476336854397191109420435370535949570627563852964859131913260204394678965955510919167630358145517746624485981438634474471248977167078965464956908619651701715702669630639280565162816532070742321473065795851510441454461712205573045369032096220649674293833602262766217595108408635574733290573815826444733014012315005626281261225882828861948367378826853624439625219861003988955281198157246306539135499373745763408901525820699246262510387608079355089199044217142238868036111841515098021873240893411462473653067808398618788819607244603732732987127118086527513277082283687562338413275852110017823490277103984274250439326978829554004113120454880107052244771297834848863687223948635986355618596856435245001880443353307544688968643150550269852241049762050348333145109055270591449557623649987503555550179579921637703441812075091903798339474499131620989950238168892785246118319303611426627232334134446210901899100857951855301842190904265790891943860881724415346102430401892514774380533450404742462614572474252413801749710432211685149744179327793094666008232091083908443425310854115300229424228908796289279167710724862537795929317979291311369231759208480700762658251816331168558507224522476040617300974380151539218000865485272133675027278697891810898483209073884164955469591608575258144856995703857241266631271548192503300849715059018917094375814300654695520774140541536402772733967963087024597769302383140430286512286746384023996985556141553390590076093583527044657489131370281177353771125956589853708590211025769640218193575061385524127151066629303061933144403762117762549294564794359420322697989883748611463004913267811358212565572823420892920828342146892591084997024633321313930477750084544192803704309069798647054093484561756187586137622052011976677292751119975988920241977905578814157488446715496386753062094570681901045959495087171479140559709123523828471219127810525032472220251581073918997616651038227237320487054115366639258170422909319812102629194984762554099563099538355348994601891286571476665764099062031786622617553367458581597903597100014493032132272818527719660148551426846323146930462978677701111834863212054044136049777879505733324615802087195629971797172969965746918171850211311261635791446226002882813951079423300605849706254838451834384420896380575194115564223283769701484842497926626378590462807656185181503149094603415200033656220071616254241793566641332444254347188544725588899280885002141232146619082456948193514868692183254443441416053177518792875138815560332647142589455696959429106666130269584997854397813808451623799637276776957172994961295879149291408990584298944364257702045699340682983023153309559183761299793099009787798276922002044058720566166600088597798332167152864969339891765099656785380256872981786698235932965196198387162960353384216978386850451697693260089508319985316748320302188281906754921810966956470194613056030230576339026383519057189014405834374842138880505140535853605389126649166116624287446995265437583748517298800651805802807873548742810803491882068515073474099691857806832201099838601484341622256786293908485512867915958472764066181194303165599043028130431234899642838182393288370095824402782828368641190127491971535844596658318564000730584745374446179007360380238266983218122906334010975760721353051702061256499555501504887199078843920531323301011313251875345939049774055109814240721132315934409861714513596984471254363779247466480390256604105582068564786450087938711162435296498813137575726026020957496842981433699695888044042655141077871002607238921353357814879875718472827681577320648762271634865371558339210053704982411646684611827178699242735555096591170497189341039776668267597132554784828864123221458664306478223349146900398460297455831902428271888156089026123011662051944228740371230631684752353967608804271973324547380940281943663061782312428977128543133142963179650700712737031214281969162915791649854351854906692792764497697513011620368278880932745284765199085329623878766299585119232856976229813114979381519983791751693185615016370374870742114590882093362962990497173211725876826585751514255085058085634985870015977015743752355863320235694260023002305143563361490272750415867825817605250677260044343345354746889256656025389585420146253805448254488707261242152210547730210711889928255175900588611896824538811812049260698887137440828296733843314621718955310714858397643772960707928960302819600943262264533884422446143944083597299023815397246532298432491176281323979923934602854126471022002425394378853509379928803157911752132474501995085538033785587867808412696409903948744341999585711864357945723986445887240798363808683971156194956785692440254682462881833670396068436057626925715570362141208416099120872651566827494370326526550244605796438552512527559392717361745509548280562166273947521365442302279967877957070110133650700011862982376459274028438263266227222756735628656749901940610144022977323001022103067876110537009664090258327190408095435999754732621684465459273391716825449015701889541083231225839402480332582057044736635164007545505285119651579770622577451871491125246663740079618744951231588219543851207358029957689116140654635530312139227566626915915377858791098969159231323599878066367743859159510110075047894661407724907644900749505635405393986023673028498118108724497114421242910562827209332718122916069230028931716274760129126698275335354295927975319920836388746020144321755225751306370592670299117157674499676684851876440394065201613219339184891164121664295092417330667094892989625193042012261701356843779631783474569734541836172087625566857607864569933813147227047608820591528444524457530561802918935631026011090974939691901258123678815592931631296046896751658013777606883377405442136393618333880208995534148110539062770224537374901676907184490678768425727624289774310039637738391025437668242492805427142392604927251874417463376376316199773901542231915928527998628223220877364713707831041944617015177531546202500989373691234512473655525418361865196109000735051087696548080921028118043096045222547687504836351809562536982164425616319755629891676402279072640258269002809281123806712873773881567848748416062386668420514241055872349316938529351361015535119484084468841624325568938695309168844102236267837492367868533929131715613954197968564387279477792973578842741367323397623282419853971262202302741978498008654547869139854309470838946824313685699503920176404633817613804795380410772925616934677329292217344440051644371285108096824773240435797192444039892184242141063260884075868811850978298125154372228857529484688475010998821102981852203277284250946465874018018685034452804792720603956228842897630299314752137941408422986544995448078864800960189989660399011589008825461407561806440448712249693999475352095003864014028669845495651375848947028576411346982326586545050004227270840261153293620541611421246041776579180907739404104245429440980964535880101838484917145122950632872695428917846551721891250090661677256648731579188619555141843304158673571031720832017081636267527168963389076469114186948706623068182698245994697361299515853796281400014272110515948430851601400013142544102034084920175623038247559150057793095740243927975317444075188238085404449587783360444158370468873933208418171897923037815004014318982949980966626598983450076837015571853315318671972942276276979204784593202460375639535514721432397754256269670865801319423535120955024121354629600916613902570217235914290135402667799560878418153397952234712804724528309496188809644193787930557442286667179899951843803505589278822074426234177219619793457099114445852544256181174242873278400137114298314443824254206200343034683538673031093345217131399730170643760717214101499953228227841991480777827189510379210407946827695072071296034382768776027273761166919087644933297567444297737983123153871580652242725087989938446260675817399712089989224711470908043766243574564013962918487173637557108445850443512772838119433456470059170910449336891753814674316609040482509332312156426374598485086956855924325672936124462152295192450447476822125385079078262837779808286167112976420413475109527359193248338251559375952182460404839485196546481162846934961295538475959387499854076471435052392988090074415891072265378332071411901687532221648987910338521430585048077694346171960569273263030090009587785247884052612908078753707219040811454783123371612136458818349691120282103633895216990385966066087349328207169696349708646056781076192245156971438181822358290594203449414632685742753231987495943375319571883270092654783543107868109171865491075556591078647691090688298147335882043906999170155462390808233826086890230487711284625702824032892286389443695634781899798804361894015592874553969049256145845832686009974625787401578963302439585888561421483260070577709142089625213090074616181345175531015872665266575720139267339305239373628101789741873382811385157100450441821310842135849738417716189485834388676531989834137869871660892318313192829136913553321401621468322999300317302455994990404399244669744925121382830610876589456273985105861300532641777364664540196436968458098096430666679511374148439241278472094401602927234705442106868317994643522241706113214733881749808444811797832998789851787594030575492007160269305601788754858731033634501366194465400868161993030208916589948914442846477875641139623522408925480241107988890606435912991261249016837475343038148614999904209882309064667628651673861948965906125216191913506459875658903562691785871210719282479391197315867291359417150888959876105769877731007855247247019460199270250606091918861066432289717652300182463151980390377768916433434244900249043778766796014848879395157253953876520495798874825555923714460024216253092469943886593963034031917563285364647882542529923691894577792512974998328914294456324091817979891549500256335817468683900512467970596420404250264605893312660445298388725958936661358474340447344863751244152371823155157953073087354343992375443512936326628253065486185641241786130396122194452046025640358949049501347708395093160040867065663593711774885239494447184365258700854739455354229193731820811404407499532004022653981018863227277766393953322541222195560321016623845433967383529945677500025041662469969627201041132081950231288457063778744464312666281890843177352528574483113339371956960225690831555503271029752340543057742490384358872676202635842580815712295825471859786809267053715263676083977219384340261298014648393314288044616582505935951769169107208915753172444062508907524526562102480565560279606746530797578843989162239881007544224702660541340822209221375904412759581484118951017883937944398740133243908713510940188846305402774056945494583320763261001918757588500990516295797821623231699143445922062714076651358213235781789530225705789794179463569190783137009572651039009709905511638739632624267279602968288374903982830971245871176640524663418146005442024679553355524263476434197638155009239950152778267551445684466211692789682909581412803060838397282490138541264213700068378156707047334174945612204536178403609384191349992912131953427417263678304792197718704629020034289589309075572455207608196105887629640714928733626931859397485023425745058673897932187309185951137681605311896667429489308373149687645487254203362935127699924762270038067857289169510320519555418161265649763528980857498777626724101646878745094129187475425866471049645762274598468894723943659240286831377564330114092572712266485402582942123630320150257462417127984751074986332553055462252876644338829554827373522090292594801637627971626797721085279488716740362412738451996653892982521235558564735774747146034500617331077646042555479524340892550851380479298093001783159396753607928178980381180635996250380295847442238308337855655210703460784171315357402969215969053414986360879760001470865677122080700621150722687761061090323420597197583284465222331694620769399506936346340614412353269743504320273193548211836192023679222099627002987098747503835322934018348703805933302980967416664788819999864409405547073808491826436357228543918716883394034832933084716672469056071867897378205107481432035107662689148992931205631517931667174662863375972211492441535436589199064454366686069882397771583132480411895849815064365003698807104615022122971587630559993474895096811397384740982504216623286122618237963687573938524747635428702618822954470994783123737394545211823952931917108043343857067757153461041021529187490421040629934031875715146502430290832979406485804314433041647423102845024474756920726843490149856545782891737367557714222114355137371584435293090878484405786461773634376504610015460904051589648562884365353432672010812845269069897473090331040592413513396609695915187424234738270885424709152404813711178305653440073854712977658449804207805946294610147822935935262968621527145176645202552994210567740808167052783307530847094506644317005953274569544117049752682720473421528366674454251900122060141496154279056193252465821658531794217545216230558429058034579448559696023663243003584028117359783301659091844722088933704888887103924558542689064110418901971208001446261728255359231244689664304709766086683633361212082209355340587469346606811905190953134317017195151905324647565312681464189270649429259794744157386351538317264030992889527407190414163583297204292299390145095275793691094151229984812614573312630174380843433182960711341361059120627423185106361915450281928923490531806775195220748124699366818623427403145266835401518566438788121472749909949841704913343964914115515588424135861114623333125314836762173643387979241738986602147774452704557933990284611744657107413411146672795376914283229431286556628094470594841761946375974290931392966748315334451802215857279793304533671179746753632968307916995743774011264371860616141619034155062432725027961494576311711353941614635326063039945610425199774894349745183038091022425899551557671829688180503171612137620997290152304115018404008193692765572419646568564627872210094401198802126739724744966639706322759580399885484462070115794538508980800908299907242260905010263195331527234428541274015412040165505471445480254165774636854368371528021138926001486248679213773057052074808116880514568110598012635819439497944877590383217802623049331726520934894681829961699493731969607212744365384725590382241847782771723534224189439429386173681665809319924959661141234026574530278439709633010520139945671633814835553297138267871466564679592018585193849430293466313372899913515341657692502604372101154042898398525967891730488554855149754747722433513765249348154069254628899150769854452209143148725062023571909232306472555206987229441570259614131596871643801483849190558101700043169957416001145277972235758771196291795903465365706581433397883472880700554059077665422968283201490968739043221497386516311794209051057506052841214530402922473552751455395844827980769494142535193444004980787876992465020290973237368447515593758010963971326667261913687874734245183638833593694399910299216228754963918182849990576655627999310467138505332111656194995567854173407227408904915049755034644146514672467012137553859989382327577923957506942803416077534445473688785143583261058839394325215788904939930580050167387896805890189830728738573607206737504622829770449079759268485536424955918712833722735680090396893556500305662114710036278087717072729288706350571472447980776448981285080272695902425160487365532779462065085103723748471518599649707009157491639690264275801466866876119858637004053332533411223283286534284686215663696002462683087694602168899124151670720293327813727006090026636667495433232292198353286963516287359850551757695025456081520685974121945148565490304017085903432211987516831680684352544480215673925409104415372101883012569453018249424196135486198856676469767341408353388446719540540751963186889598983949647402750705151705750791359289434335167949263965648212852375216716127019580181585980907549897830792147795198284247763646893445091573022141003539979809088285359515489654990278096844874114284431133897382537436651724052662546443115579426109606896717349283886187502879826882109743698291400492956887828375458880454391441003124504982676475169212951597999544188956593331954899949293787979303453028200043993940539437461557254662552964537481087540465977331894616060243729199141845831815619810321917273699837595128259144472554383672777459559121631256832141857306283369392306108863519528929526426535121688477184693183946576199523150572760426228117982745181585368503523608269098576251416137090061014771107179572700670494974976623935215909425258511566253511526833156246251854969377553211629115415200352593750500446853948764013968022527725164520337033067733006032725665686198291791114857404057101033179260081380378045489580273727209924593456009856496324867570000106828174974441368662829628879759649761038644210030487471182405564123395473934125456561049628110464237662284830548086728581826125486174427954165953922733962515398921175291884957881095452366570055851179559394071842280455723064048313866200681138034475776384844386873622236018574950349852676837746273365764360468478575934540390890204629968489650426270084194777964791982894730629140295216123585893501704224945254636667943167905892112204223444370345213347194100961335525923594011439712643506756053582615563397439796538388464448927401827754599746525397562727626572565295983493418879667661814887262766329919833060452245951704159824403177506772452039423913717455862467125072883792907468699307045636936669424022609475471483489630480566154118883722232447966261003379195415162014286803911545112727620746273851867300631870605216603179505568765236644185747835643810724068141083366405340894198076113545501384237309853655855276514666152460098465555800863742476669224911031327551026998626006143501058879328099148197105994047291436883293376877069973039406767119447634137397655628539544034202392466549394220693724572184178576244551675123445725571470518685693002051372563988478801111763350030232110238436183612220928295588775297160941624026129153840125969407439416800196416425943612510843918861733718434729089087768191553464239431563854719012104179978607518005590623936525036749523704785291124326321338873348208375545584966446224467671327976557046169172942896227430548779539721786611827703599441211046433022520011752445899784097152972920692309096698473531289302416593060813783015875578362071727701128798100373524003244520186875425405144172238578307593722611942744359443709363769380995813065456791198089588442246408750262162588970764597283885529149121410884136328578942794779048768575835172579494605723352901274793602795055124772390676478269141257310084920850419549784876427999547282578134855480765299435151686698001763662001052696310635333941694841260720004434937014190612474990991821786155482388504281647120612408839566970572274794555351695759873694993801289390524554384448507457527317990951139219337029318248879577175191247492166279734440664767672071454087657838232977116586225281641365499479776308213605907580373934292123417332682668865780494005747577027241216798488116777796875568618888417611116633130438729103067379596312293023890894241675979944635763754104192513599520165761779628688870533371753472014354766113643233424713989030935682797743498767616044177556213506339721777945116345928199127648143648548179013944255398489965408588433859448819894798266968084074954315953664016100846338000122045084820160295646423209438914873225591884940412517779482597563399041434667943811790837563148954926829110365269301793256097925978801716804064925441344097800473160939324689245256378136117598164715577740973117360954386542916788979898212314434622204900162921093765765228784493409132162541049859399037557101847631112595812750430393095192942869291258980965432634538000294166814699795059997084206776852645551864196927899550483525470873235312036746323621104740689780317829600219554301219964953069421428010986897732335357729458295265846761432895833363354964792908359271614873909694338016732558007807368535646939381057782919524659282881198287336520157112602803710305649456435762531854089907135071397540260214684399051031663209346900630203580956980399937816719401963045108778202082617837113849622984521312422944881290277242500455319025585898154780652948042151027226333330247170766596891456401015923080305794464683063661717840912149546542205555834966637071837255100203191064109874751960817076872476365006896885062099669305708607149473159661519494444700321807989489756336357841437076312894763423688081248998342372738522876670285694940332960323642258968487743608218173936409987696772168133868909160924926975029756676725746027136475405169420939270020435290428930151798346094406210372376421259168754067729231942471415413345590599158238337505337191025472402979207135237764962778111971112282673963517661247876208107951706574664046287478374772284973763311121870200314899210343758361864556622927178003042552921303843795603477684538070843027210295994670940117455933425831890625552131141470469485355046150658030295779724467458718308709969206207590992328353744527140734095720511013436230852737505090511172910521237997852742545006272580485734430350413089324520002630992213548826089583594921720571912186209777205368610192367404686727285193247687344866744448541758456946454732533478041346916045951624350175600769029888140891753456729460381844151464910571329114963646439420431266886713036893382917861790751991366803788827372759605968218277677311791743110413563247635705649935911700955211685879353405487752755760268784701960946539625083651236942523224884317002099345774616887072193819698258932528397191867236665418008693170840770891294688143608485424575799553419350612853970080203059790521829249251168281382715594148589571013728384633516372591461215306810729076429427516799640565863833673607642583845250171775519384472829653821864616646102891792190192366686437932065143699119613962829359549796179443099160834331559306446681306853808887831047664698505222310081462273522011056827001262673241260638321140327117199044172823329727943394084764950066310853663230878918468616590523937684379135816001898958858918681752073613012779548731021036954816298826022184772694620601170133577093045456209477024759952067900991192572343086670421415180474750704458286736444932251641516953828634645928693968444982875708322003719439730936825276894528705640170193101506321269781961283679884830046623928055681266947122942940556056054444134166243228603564060089037446647769044355211060996940802445200358802459118957720341812205433065569712533169041207238435354466805620866855841933523044672482348162986141216616077131465679326898040426024437945154819510814215404757203822924235150572092190063629735151789409993551792035786081209052868654391628165759680694367380696245983339137818659734686544809678301348492826466750764111780347324190199680382439354056956157895773923177102954907389571895115574014470719380811561819428279644717604057674798938705249430932267202402068358292654000700244930871958288721152706833213339124885658283491652995297258315516896195469889111924842205065092224991795203792292260412505157856367336301815076321722800102892898079245295755430810907647587112324602081096730302666716108624309939162094874779376894140243683629674200044148557937125237722854251248642287718411126048655289689959804308209100376909938978611343811492735924526667721919813195162992279667148895642198078492624242196537491939857401918337374463098177198248962511814373191491437939663043080866203039185196604277907237967742804035558437218864033867194922151850881671805620197207059447859200259488473345892064396152525538721730582513574137179276722936957296580941344177075538693943839718899029497068686829613271767243134134615202176790564941010852268018293289270058289617857634222083468113349251485993613925345204775836781133816268387522130856970615772029601207674622065215118324745936378335138193160566722107459375184140947805430830910554029150634632423002587660142907247544043883963211444881901956388708306702307263375553774824451315583961153923685238249864586915594731746162020796199645370576979455737681700585333691795146035753551343730613460151542300949850583122945543954523135128300487668309386747727797612151854865544814088125928518500984907190999750981105599321694009617577474291069685678118062840674325160673897888860949133466867104684763558796549427893948626870716489872925723069492363952887274553735979596224034868997528246871352578546820531122875838710677190498306546686032785163670731820623724338856528044696085827164636777903925309355878471559352417992196162696504090669753151907115732304116764089677287110485276092154570273753387801589215697456612362958488991471306883499817150020406164769578925717392393977536535036456570791866439242994599162850353554429176694357168186654572020184561552612334858078783961564714985243078122772618003976411229621508298632153934998171777682288533661261215181483589653143752975444823896023602404212907831623029160842687526861752440669297289432146819204404661688771765929368122524144769322212209065454831769399913731907897379954973782793658724464836254182798131540839115245006472641635986902959656066173079547970038116315736634080410956389960565012354830022090578194089854095141519708994455192630181440453104804688366893549133034865145215951981338817399485274908559290504298986982127228024647462951838938027353749913592177170716114305986304620800250889624422791117957486235989160538122908865272060566734882902897850714352282586712758189359488987917937840052169303120336262437842235695270866658372754543261196058988897717718744450780461855461539664671904215635877502730389776475749732153454524902132264761615739865572782761257527492504947939805056243055356848788743796412347545426719258432167277216599803030990071853053335059044196953810729097823904281521357332496404639023706253355401182617634501367366408885721258218471191222079208021731072099220297964687240038165326728846935217858463270716350283532457197625482291399551430481752454820266681186394680891640574762522687516692696758607436748574576998446959297472228480345633175303525735672843139785876891514299316638957554623853542170954101415995898743851856049683335192167040201461869649458814899186354058170096289626267869476455996945940963909806154439057813569320128939923913802670639176809248043926818392457627713532025469754417264934283755719149235308866140491564645135807115622496218367377777617999207147626446269860908235247962407605467825666362374488527519176240520425287505170494874729142334634602922210291580981998756656824851271141236548183170715579543201567846323752678874183509282895448960334915112001504510921233877688056559292645487880820294051528938288908103602610489808049439111160625282946985645255449762791225970806760122236783554317808364101790246768169930580852278327781278151539013864585544662192686626901004311914775232068137279392995099600953569587014119950977497577302349727594424259438367405882510057066564101586125734858723907165864532167931835960331017001932959732050683846375067140129690610186106161979565963985316512172283164183618093017190169781569568438879419091179629725479704476442362859023071740258168561994230690945119473916518083811572161547558517923903772450903722707358244519517617686698785350045369321069732407719450307138872109715927561416591335009328265580270885282012418491883703205013282215530384814075950957339796465637406243212285769659640832144881463157155537851883767454074251173562394393070433467828354580439044118010830677421349829017674475384754399068395508286289012481718738054360179182802248903073177317344924560432424124746816801778582257735990295152113733340362870114776031349449269203800134748136402478983755857311443593895029934153484231244613624158595464971347584170376435625868385197193368403727910042643179820336520001823526568472000742677267449808547158295834771568700700431766732152492361324008773483520749288311440207844043306023283876209371082341421165875586904731186232636560267445191772711175744257381220295663528884359875024039447444151748894461711221669108861200315125602509890788738013629875316221728032439565432207327895780783551344573640230887253281000874595859034121592173334814472309188982885796454896523256786697269622360534290795432300700876662576355730163776054113739990922528413900278289075774032293503110419519703534084871633286874174659364424456819375242082956016021526917977490331538429190864731231870828115997019180072678840825635677801556083392668792696703024226402823711212761384056373491535524838724739728994896378794863707999518961482088646470554275143837473031197358558588736342834545450714478225199306026474881835761278595933345944439158297120275543136857530288833401693957937795064578788964273888360519002979858952901280986142762957089697543544556429459899337744727725308357368910972404590625115874633743178735720832536017508421509880459431881813932015406724586394962346819951568334767007463631197571971746688883197680208275508049539059151260241194571202262442902261005828387927337290584070237198806525402073820129725432867520438753332747677614969711323889859642107354223196294192074818892444582717309151644844356208216965444150880332193916665794767982704095386775168307520542107331872190168544031510807759714470815655978757334043098662148592986188017410937882128016304450581035445363146742262449552871589100762398641620007697447918081145376090623402643776520372536145174275587501510956146722121269919230752865719677750921232114499055038034307873235438343806883829068992465064207789012360231997590851339630813617464265975263110880752032491933817994282560447140225033142839252749648948582427704332723677649466782829206657615595642408890626084728782918673737238603814453049307278248385869144128620579899008120406580631676941564447495944565733897856098991701483256005170636406991349674052849289547507130975498999413229120685471907479210920103947500256212274446569157462634651074532050823181749105332442257699011979634014228921871433820741081836368495089390556424412924024144946016863903147554711669560241824681566889248978794612491575599782577172438350364514880593225276753447611714864017946455502413165134095765550369306725346620708487233846628453925996499131059321981221109651406755123337722921016912957574306710125509733804795027110229310141164227578950347043290100966360681015571134019887821154326160428756294759724644687162234281745556815199039590850946018715206203998222602578418026279785222009923502988709618110260121110401561950931987780865564734799362429280248038629578075000318543231095316771740805288273758674717881471552812471100156924548790566199905588579288081313715114149313060933703625093050237054301567029013086107423723140663050874152267313240092009650169104339261874444347423854977142148237727199529223669421875883841006782352311126533452933453764793126478166543286470614961571121514157108013192254234726692093120899308465482911493693705620336214968274028767635300995212585871381317092329198381709480373011220928268082248822200298690564842159890405861602815122281699512219289375835576010872747288988777365021935045005012846364523659363638429520059416744351497737919599368185218044787669252299294984096932997953782798346571339071409151472867397019896347841238932767177351066418247190984997460451308002521877226066598182014781859964539280229874690569569866743911949652754775257067562523577671989672493270807178332140749674783478019136898575094270794210837158260055743046313114428977583760941635483406401155506645437791263127320616638603995491830374170163688863170416463115806888285784210198873851345141639290126487586278600142244255121993496603303809364321553660111583250886094994212988651910060515559182217238039149655556937791097729430618705610482902392092298272889677888715263808850025543011347943645080901842074421260544326340261591719718511342662330729538396120056455364781686587710200696276489469851626498361844707175070887401671712851208220926163442260972372771337450741833973311825560924104948552460881000876555844469297985136181168951651404997238216305176883922205027720594302488209656743400564534260187205514825902190378325188698906402025966966335576103472737825527716269221277412531835080524204062763456608110493871113792293381613601181495491612764237444509919158040874930276332070630608220483120020496399490167190850533496825474290257858692003842864400269351072089526724845053313317254065947172130982069256966863147497773738662849855848129137132268695961625870031554190006563294460349013829333883416153658813141598638221854086733610014983560665731542453631564046327162957559320482852503191266595393271075736564712228904282457573994192274159258954355324224404905152778907531751999250778556762410220514716424701951415127748184652696279175721493779070262370104001237177057869851096249183418320679947130271793708462167471972095867138634925969723888525397050570664692845306533265643424395869270819692245996322198754849760095517567328858106775717442604468755696945017437781232211059573451606493477980313550153440716246477976578497993057497549382222040332236943600581828752257105942489342417690588988182542949008268507536683880819239635068336669694995785104619909033650303915793285690471496084685163122290390473219195025409059259046659562879336327305594993790795501819941690227914039866666480735105071969612592745564155870020609292191759036727610099341305592526351850222973847916766218765325340783241789044556773767165356409800470540043770759630502158617531802211411093605235451114890704260986221168475630752408919398841003715229354373330663153499301890360122973444975894472306789104448630736417533185016201181642806789284645569026770659296440374976530557745066041230824335297102664126567034751870197222916148308901690465704014727888386487874227933101604339867542823282392224847399547155113198440810020983643112004237301997273783051291897358550217809060479535337887027495304886900355374244650945659292371809720129285006136306434138866246356964460087958457565388797823629465636091050481476115488567377866788948386964319358448539007110188288487897543849468892759834580686216450148474514719175191874822957089446925993272010116284434383927936057644325413671280770457371528247206837440678146499393133556875806345693191522401778141766779831293498159477520784367344387044903807331547521489990362027699409298371286471253599908525199966187460138017057497572151896375420971694397913002444697034974059310601909440037315724430163745744118744143772999420816153346503711508479922601501591969218135878097559102210134994169981600974078337894965091295123972652761133331038297809835563170435647447758013905982867144918044249699943569703945142540680957536751028316001383737178372193974743241491634604704833523630346350284323940862557651353268538182183721994889334313060209375381114743212011868704113892652128423585355219935965653306185942380469480448518903736152346802774345758448513607868082612788463299456739853348976468071093159624630588250522768530393826637842908593302384751373790569915707077402363923215224622035919920593097516804623736348243997272929991010858659577611396721378418112668606726221563198630264180849208462234030361721115895609629054463313533639099240646676975989260455624999528675906236645988852031926204036984575534197116792509512166214755254632223286661580610476993642820552871437582675563712657303815988533141845780588908131608270089850512664532720369890381218833778242218928920495439611816100448811908438176941064575840550001174996555584843255493098179598041215853640741868833617142402463637352752029599342253438677607380873363876109489510499649227322132291530976908734065108942184335232367425127909307219350626818212487436592732382660835431735699281909836028248715525545742024627851491714926581230151533964020674961412738116398547058716395371140693793715543363636757339636709790906195826869061169917690705055110947989730429097894424336560698848262979125141789811651930361835225601635857411796044145300453505743359137152237716835183944470161265141397911502902507622815248062092819931054401220866604225376534901004439207233340083121653155639304384409212793030835986374513028019125661621979284866680307518040687899306971878873219818509879150180005394772703993511283392075431514536348728224914725303904694881938517747214501430571763122379802584329676367599263589165467742636936708022943896531265847110741407667183014147263916125340172046097097049546596323234258016886846249150012740777268083633325851742714628462568720866001184051091055663542547236097063888629947682492648363135894686433782827862076915513071681550336439896242554794445072492527720236597210289373924922596060070232328225184349607830885376273534011962385480397207855875829561160877483988359312610532554762349179086962112261704299918291022245789915616277913098125622501480823241635754935913542110242826401220787764960501390152274476532538400771526617490975702319824374465061392303005513869353376016167744185737977280837307519753646356620751631862854367124677484387627051468275762031036452260236148229826166387909706392687347558098705427877572002172628913091011316510321433145560114410882621542235178687884309543684304976931749851058715689509400075380330485879203979530695648109558727284933971908632650324106338420535504057890087990630377732467144327934736104560344361600098072290951859733191067609847017621848097004383012882773024085051555791481363462776298323025457360059319380402844697527241198787850125304207000497807619113565379333738718842223091936802600166497030657797488935959220591926942902897941632779298951830077479642372515858680422380151783255657421629767614298727625109256980723277040050294359863497574341857029507042484400569587159072145674067547642323614032930325948363889425248538293407769633744147457220618116285418445925130474178165809279939753203906079702263868351874811214552500493499279577553948444422720298334417684855820318604606123857467430424237609621733325582478319529201326731508719509916674806103591534372065296723875877862177484332617387652466417910710299880676621192474758161634130681168088712340859911476585275733207644833902081923379619412775309830670055198407874881400538660575051879013474623722498907788822203808328063666389111383633583954823605586610471110078495059295210108113232445501135582823444704733998775987500025711113036314987733306287552638520342643071029776704337871287212450983644109656604707200305761091040887461795735075497780704046714862608116941863925481093982464869184624469268642482399760228305124966887424943789674820242880783115006589269037552253703737738000911939933006879816280841173602946673381885584031911862746524711623717907094801513912792166260292526556634714801104255422881128214178490524742175213411004153711795615947398878453812228865500228091165550185020679278754679984245717839842033989034935074141841152445547825351140032956031065738182818030313563134028121453377773838645010668802318024451176251670480622677263587255607136774058516588817249601442269847676416892901349364242912471902326056662420015591284800140219467048788949491863017196221621795014850616006408666657366894637159681812296369543893785127017000217772480197049391041129520759765077638189738234565648974183976766969703436172137407074985909205437894930096352407831964795581096525207577385149976027114330942103926679310568044238643458440498226997242871246389523157988085491555707765079349383339807456074086707505938272044773627405653531370184904081848009598782294748747366187750807373887522283205955792983187684843082093497321207645351958099576012672709242296747246373689936869465495206517412732347673308951875097628767967080200409641689827456419850120205241524005192574191398948618060469014226887667722513091587265078673110512571544803085579866943197173457074092016850363523664779489372645640897821556101180200741916236788789774763898021685863849895156672320404346291997521204499027862384898470778200362818683811998993063260342383080461584647369568025877397891349892628920834761623128002712218199651153667189108332564095669005560774834370395263089774984707221308539753076471530274661491305241719665204935206338059025355135292772462028872217145937772360965358487850128379628438702683030290986887596667167457334823339681852835557468111769292493519661271496379804290060134416465216719091873979243917304582700496548712982921080873393282356835285871849739975162705640184188394086545521866594174473984158134079153093318235710070512456874466186722920727572999196674802233332613716981863893215021091214264655556361093980454155005160514061711295694027624820335021938010688454635972578455132257277960727520745440393300322884464509508371505660004651818866610377274065545015023509404108958318813421610951522684095227803392108965373047719268043520340857607980164667076175624769130559801985919926323122901804867130434318303293985202534990088275315477013853368745612449676535517092052187574654176299352452152551090352792414592826481437044459240240155217621777883428808985823584301351489818795726969547896345333251383105015115177593256305189498334433774612646699664617032476017115679919724479503358290407482884280790556053619651206590980900319050467740520679260521704077017891509457224897134165982874982723041696444906355800841641190437143134754834711879133704688131854911789197300772580668445716924238696984047498346557606454593951845500827589685851097233387302151104263492087147623470952247610577256754328007637368954262673259801613836784927764135590918552800890491913937410766303637117866746442139442567828519470601659373487294298919935893243569538732808806776237473363825988694875827794630289406343540741944734063749830866461881857084486654541883665899606350216731247210264789644183171389856470898423087756522836505336182534386515881851998566667535882636880096699647472534248469937092188927830143950734748928756877510863717635365810852780270327732512218615869369751646375335567762509038625529057537474959753452099619157394170187617346626273627776833907289307731983381429977885097719720488351017922535094703205658179753631470582642775963699028242902266211132168645469491450290866685038561680395680098034484730804649266412742132722479300726768938119219519948835641112321282459336902067554917829806759975388813234456797338615819178710181031425487889229287923363952382782808548639146318619282357565599980185885928749314927252061622146434310013536521786454268069709855067691482430885871892109260029793867352136180445007432061529515688115637310678676980565206416391618061804177342792316496719953228224786829371782917203871431612591658547752113287947825241158176618524313972812266136696678382543471230966368836309561845733445927324182136853535269936317706851845717779110392575741938958868055377778386397382289605992002103500616683631314579418616213641161520658514264235695602045286890394710109396042816141314739458525091764880745034202641632064662044104796256981303137511593248264538521031379378764384024110023382149581992223080684904565316306329620653781772103777713072517518817592996386855042437685786317051718395422084814176679181618904827422819496295008443227961830068936633151203000764023212449521563079358390076913834165949501185342385490566299953271626134197560522646487028617380525397734675170183773009105375729011941474072052466513759900074712548996149268642322766868783241764790494043909602660258195128243815125579538628777663181153341088007412103821883397938426367182153873338057363451489916573983487037262172674453781341734721416445616863811508873725907771120876620064821753531559113210504009897982986117705579876219669662445925606545305110279061309673785756566577856159205703431886258043750325133050414615727979225533880359304623084409956447650067609864847387649356552554825989224901465867696847276868292444244632849588091625470186046341340179936784629573124716316044280852948642188063006309753312128136947411563128569580706439736004870094475476281884875095712894277153696956759158898015034222552081641543368402909267387027621033593519990428012182703758643471678123229943766870028925254465956552765959767043157285139963608274812517228639934616005142716078293158829259833849715435954634401541279472588003345452344597142783471451973478740746051308311469332173089891078936473982343281037700312255865757751319361660792683493672712759469399988355848467830761216594152831798226162071659040270418019217953769216797699512617115966648050212006060904340305342371127317582259896965943812126707465019482794047008533401828444084670661844326644148031138576551183434002528798832885425530146948226891028888288808660847446622720357682409919580911029793752277727884753089845631057896667820836260188045875808766756731986741869539898201275211073450972043024182070964008306809882412471416954349802901392997558879838167948378265931829897683585279029475448827815641076604343404937254737076329931136997312796669935537225624048320066660871660417052647068859522062250655789434385792887124312427356042980948886121586397431187121485948892806846304681218041498987805785404204644976240048034772280356833170073463916309899627008209028909192113674301179112393074406988596228340451934596514952805487498111082835278464680300822247457145734930269102369190703686163689677243985740842650844411006727322203923603033902016033761618120335654507698581304192565961504003603949419325531346442584544364723398042802099017528208138167842635125635985566980585937303547709505319648783793568623723315570921289551451789425153620014762973933163662008487769532226545180006176571499479720002501978285699414178879516198424776005635745844923179180961322496323815175356091884726862136430238539743203004073310100220003510210418173204179462145707133889941649723920550457290284307222526004827342259582432612139953115396217215528900639412584848737803206346677459961334071902487064534348532796559073753645084105493173097279947194901690888142933223665709180862733855871260551303753611791646606418593451823649312303368664254086866637967481979512252774422938697599902067616484785231110327882649803870020018272132679328985280106129604150145722091978956625887868944369963305270778776167026863683094685500148415607155162070947296276812145791308273201985022117820592369576094594867890500066713218435125643764822141799928374924558494610509980051853353150651416498220442017029956989301104752279876615148426787446149065447074815137620163355683717526898457599921947543043915429646893275136637292013347585913588100560845850451542098853291847592164434511805276733308349799581415805195565740605836280135014037314776718924214167513323114263725444797806053551034796935987668182708485790079993905330730490191764113331345333391372591119847641435304007201756920841029832808826050890527993615282445462979644606645918469464593917333389447282802195965654433868762243620899749809114195349299171594298626043112750222304711819574550490745961717080602617084708380603201168291328043411599810251481808098862164227862766233851713141761715655135665973390725503588169842390140803898120922665267469821962958208937482287432468595241812515428863990642477087743776010076973901108689110452314320681315541692468302922248102909020941112479791554319437832309194412178591193159066087955947253556556033006633311524842239667473723696956165753259490309704656733767734363864315473637058849076927215805251743081106630101584419940950704655451889001101721407679563373480051156775033571083400478384512886069468341142041552457372165429694520236445248270869251446351178709136129092023553797014469782695164034126601183876448876610242853590914889790814461734178544095220933738769241870499655295626987125727634490061987380064908802372398086871390024333863612520852324775900540882355839761287444710991128136826197935654561068342494910890548000651414030237050980571178496906666738163998037449501652238889362965677032401065680096402176312604059392877628196362968717743009018643473476178675329238436934873380635930091980829103234307887114474733892034985405113377172989127048850055414670347958440412764672394834604375910280322296758929016794300596053882741471711437234699057297129386108306456347935500851048777447311765014374806477513365058815701014981130813413572597947471499329713307538860108258683728490132306774931330746301350616897637993774850716737787466740663594329908674562080080937718782508303628307685175285709686788366200902827589978743218080398399281241834014635452758026655563139853109694716639243256292193862756631567897632060254753569585960152030526611443604820547371972463483569931221512896501494062490108681693789157680497190763931735723559797863702052259789998699748234188607328420818783916886613706511052914216104346188329314756731432751372184504687583101444963826638507694375160389688642551099425438191741340033276158104780278271639387033621437082406941257143731981889094980621033127246364373703735840808700445010863409706923268225681284515172668932662528018658482388714366305378300091950939540851786305762936089548298464825205396252790463369529298035102295549162272408102456367088256430479135589853594543769755047750653638779706993080037478044533807549786514781194197569693440997289637234320669119605860343138786688969379873456319947925690243819164756665901125668996725953218254279267280049371394959446284677842931154032550283264168177201462230946026600198490196832280871952911001259748557209669970363516070103427236964298099097844017590160667494623463243819461438974427831015822603648487886648559874968334340631101435042439339401856720483442397892345910956864347349186406170018854463391933993192569237627058767709048246563161381032654177156180314172825059235164035177744199173748319071171022910105992662804288918531742782585644155503666071046618104736061658362067734610055822032074835936539251623822906186938455832718537135251133188626140445753327683135608694722264901202331386553280138635876762921424539016692774479530943698542791373263186097423517604981536603357443230487174619259768405562946258465096904576294677668200206576127295768892348964690072276597584462998735779863328714523147498565739458459447952241094220207693995704886955624047832365055342684173855001702777330299409814610520996422190364515384071903422955701152702616126987419856448931062019944850016780525577209731627634683186418401127393274461881185201020387253703400138835453367305558591257331574642536264656517692746239764142007974520406667023564559194284490006552927645257748328897959394823733418589139636803325393518787796704566915936916671232836980591151221523810534075256238778178590700546861845515842848731093413084939364151930460708876408754062737165979954457163612045514502825792071866559485520562226706333010401458685650456663138875217021520730870888659844326949870225751062552515276945863798665552638067295090593895357499521131133327521915488498943161332977883634647997966878161747999735527357253454075097524922379043010651906865371225656395725490163708431099047160717849211899283263551494805625126890162380605767297580799597835874316583040840966798159401962993733908209048602833276521936184132149643603569340511875163811986302134594770625201367431432096087504006670654459881296708875691000598221707609335679858555429362814040138984253917663593395506745207703607834136440996631933797296591362805379002342664690642394371350107088102445790320517980655923816497164295222117813380309458650537511328213611219369437221499165187867951960306175075453726822412275055581540489355583157904551492838221266417411904593691384471000120595018592776749698960847844416145256534501470348653008038358505847284593054123146577283409686121716824230248536620274198345469247954938768605987787270927570097494445642887335990630816122726443015657419960996776110182790361552646452925963171817459177358431624129643381491668699340722860506201503836499252632751670066757790230401401858422850053303150494381384356663262080053831120993675181587702714218121772643403232775568511764712417381916323965270949156217357953406272792544670347563355392520338960068992459365539367262330328387742429035254496324164857746325559659785346086487794758679558858393147137643352011373511529051081930681913830377006943653166013061411697090407066408246367420643087576092778758930612791509710583804269878889714366187492576552642859230433524433541456919117262754606833753132446921488681050817698096259036654434838727180378539156456429366707126617900642770267748210559309735648845535384517294700435366835388859535591164708469040304642625856696359035841884276502392545110665510349027154784337251058872360932635677842332830114551863781980488972663543012405697222956551210239234121991260507780116907714267552466518308276063926044784520754573901615758344833222224838391803781419773972321215858059232467187677912562155329704193845231700672316666915630845703552849673109478746004956070438507732843663636618464891205404675349026157925883067504375011330871471571070906096208645918673789286557113837783346023447133802267730554883917732589964404864787831807005781762827553613262732516463146391641433471824868696786180942855002374697657725302589324829071804572062866831483590854967339999516136179334834614436879321278691836652118624589545558097549706189965434898147862565371278409181031642459501593985432184924652907991041029149008481193235101612639683618588815226345613440310496475654198966354521398559177267976209516213276043279712600642838376066225476633629588855802601481348283175261203860833690681887316889049973431412220541906573257369626056552966865837892027612508032924919612274779608302644924853580839495936442570321644234690585963468238110307159703308745194534272785292013362742172762921715103259692260690355634950340453920547248283349597698187010357620131189760033267875215339754377545921731548401822501133621978777906301648645342579764087153058006593305420397894276207141314897518020286792966151047736411833037287969820940178898285595683991408747152285700408208767351902677699929079887192810000710523744228927765148161777716488731100991909036920855904083151459138102946479104620697100165604935282752849773012371058299943106542285925482279142050193957810936986315260941071055072025912578802683874199814147639501450092383122720513460160849362332752343693789958787524380268244779670059902915960209507768271662361924178499306920040585426961426448555482515909760580948806224068427612886916514358638816654553945319795533612209448688805276060774759491007675827037687627103991972314776019231161497600093939459655002651990645447222723875768301321886701888833135429438543046638435288837167596145863649900125677258125215710104639052563838603762953437533170523830063751465298654131355577365629024207464642457556555852486204343969522905175964146508290854456779505070599555152955216271840170578220409921345547461498483408842660833753327036319604450537980728941515330380270541758630463085928234163895464970381568381100512111808310894183360206390809933072730646118264066554113696969290148253761745096772356957279110816414483177940489974959061404161883284960493713971891390127294189968356122132717480609659098942637721434878104118791398049436595143774749929575814423308741095548991947951640147301679291994192155383577415270771381419729828994510887012940980231229879008732315465282290806390044946046141181306662569917149244753412809264162260448647099014856748847477581853274970250735916682069384703895580253400523039591513314755463181748846843302526435389853025396835778699342626398184332033847085249491255392111262523982447691414959411822673155438079688234499095944837057008374004729666572662712925727089384323263196909609998497630806913240679941610434951089713400739413010389370746873331349812779968813423091275899514698780818454857541322483582608929704831797389155218418977630126983934266450414046030229830296157695108746104117952941057617161194489207419250912497661799215736018098594768918457608441068382599503699624570608741483860922016377785066036081788431123760614059693808574813974640580240611214418104962264220673602700745913314692693544849565052596560937178105222489778539708147020212733023956114520997362081968528502872422556867684747756919254967364819477732325388373141750338179919284039326977100444885167955349270601781110653813429744702586687953819458438052485809672822927294046017157324412931024944691985605107395046200960531449624676613078564611062354567957271479029004614929362880793565351079463489542762217458436738179957556403465642744688856106734791330403283799667287134382877543438505434672118963198080736385067704749872731665023489415440298121949501763970706259544842315132384045803663422513195217975926464506166416812194803702609456892648819580297038965287412606357917049181908948662371364504506496386360937039874428308447815581762030555447994395376786404347766914750347989572012309479616117930120823437833714033997208104824605712511471965760530660843533189447012217942488559258840168878214666640756062013509414531823160926966081420428443109296089866914056093991655270093819802285075251517304084456258471178099346224984275999096555721284069731721607487432638372349304601499327346282836587255456829384591597889856481744268272031952424921460593908884029209295502635195805289544794400241666244877113902402262722235818393938522929977433181286733643297404565593428236276862068760223274663477510195365960407259851742559409497637847378029076507629081115556618138831429555405035966452618944114460370771498388356435953131645120394805067606732384422935935637754174296628281512461545249443438593772045013969826878829438060475189569314810722229865965077153120623478962034763419731377658022614699880959651125894998169774539641669052805830102193782547540956767088084996843289885725846327614170343229765166380350748671024514299339031720054322216172090089430071687681344356220351944801268392514462647341345327215377532089442536712982625430419333777333654535619497815605282375134386041583544663621640622275644467648997506766228877065855465774976197637197747210958882978838615008916871334644808851395735981743002264095914323928654324846105566005736819898320213707639744295489649469526372417875888635201607899078033580792016630321952563629116659800607892242495766874648282690839470871774164581833091516123922832375810352449506061820800661951998982129033188466944599532743636521388352783501071750744968793366473393807281012048805143544451125862391552005616338810120657217326410663343253038714508531187984769733593077960725353332643505687005261990873360293046177824295017356719516096582939447596766018122096836353759004520980555087840530845443576389680129699785341645944940110831278615672498521996504828544684536751006092449592384089573033077505732802387192753519237670471516534231665037767972418441511136876350484971054065846281123909327693766907816255695652532703274617260510192683839785212949102985160487129773354726219177577691198898667861240982323128751999341356692292989594127146925394173615899225156994245948821150972117192957862008115760609766214835319231189323088023954622112144827773336770069803772631674419052742027579729803677071173268903531923054139416136883476562442396488977355129557661928939751010411955771390024147289559102904980352167531513067151724834460298511331067471170872953137963529433512030199046448584198805553366925194158762813027524548417320071632090662053380789975341754715894165389651201825035975644539592002010300392730665708413045717492295899574534345896129100528056532738817266272363833490884751058051648066557850231556461540524988327346992654665911592747135115296191800596287316573902401195866467559541427566704018502261748848323964390750291621226515852213113838203744689204313871538465615085923965096413786620832776704126025990235652203909456223196021561429528314272242787646336333122983000863713314624074077151866489980610121918729305796145867723724501126244503377775139558277274845524588802002898236335598747648649446133194385336907794092415460497290091718972530775832138233238708202557440988486593803610449043178694359757352787823363725535319755130986074399892610712244990341924001854741293961326332026549024106377164682141687442997132248444806636638703683150407064688316515756675293502060352338886918721747023458825208005517158933910741510010400804901537162365187438040680110287927688504403041542180289770641473071147635726468074429494303020450645762081396117023167263246882574077846066845313530299507450452175738190989317819656539028003115488434944527345873187794951015053619927354303787291543484742819218770877540694524602789641546666989226516332993189828530789613567063970895402827490688979553028691662042440018011443338632099126414706821607559385371757075902473560009552882323747793903614162785105561120328398079723503308804269480592946905800942436614840773204723208407730908010313313515957092394969677397218788089035387824942845757838112181760001667952874151136187768123163888207838146375733215434725736268126046720100970782951023756799640693539601893448573829532890260402297580775352549612871764323619984425087160805104070707199472981761675094344081686110380467233962750016495313523948389996902730303248682348867088871721614849287545131356036843636237778767204193376614489946625427454057677536270645591841955297982432076663611121838320073281666785879508358892526539239132384566803655768472471743696899826466628803201048260164513271655143590086649170079939583774942557558039285572804150668615155088314419773001117427672380085070962038727411192153906939892877977801116323088606743440986545117657830327394535019858828525977227951980130361003044226357154734929964558386998176438102334462118966497924312993157086296839866945940044219322722030426788937657371567985879291257828765621392869156039137889691420191873418714911970880399426241257841343630191284405772788040295262908298201072325786472764312575367938595184776979196895623247889783627655280740894135175337521926778516973008636602197867365522243915993820994141026848836784670900858587008442150457865859969798517678857492473422463680614380026794205976347641566452921183364914866894331783849245336885470918300049643353905034244427026682965690490747578518913758704770169913857026926968627416154400479415030848864326121751194774356748268756947012416192963917645481781567810603134007423044601268141101586281804258186839423277783870021999140011836209311409761677181009646225192156741586862412926104120933859802172613248073148155426728758504677888434844120051563888299025412306900148968154622396068747078835409673549919949443271145979854121779138588584365313030385866238776889026749892416919947634446813999137410901121664630369717857369123047070446730198287228526139127882093071368340687597157835267193546185853437239869670614109894290799910768064285183196603690406360531191928859884891205159042317332091337688571083540557534222376140615433704363949495133629585617269989301123875846495463404492483257924205762468343827630239088992407752853501573092418288201866949618337668345503453182720011181938450553376175164032472353721008495242752676844894553644531016814416827789635796161439541863672412487144355535228953303911477356636365919304450400709252697388109698121334461174167061970594808838106245374858926296562216624859226304557867869952170663153669084664083364790797766642920758980119130683528140323435695891262782020532936245231507309952888429292833110568893986108996402032351341000462889057011281229545248765312391861890751997333568469411177562776492240201850611056979697222854880851736807428136937039236814687794637769505296483903303771820281001813552144401229501046527760076811545427808385997705432679134436996957525829027799669989552051122089863185861171569061518818187246515569308208622058822185164943520197203763922816591166988019130115431145483763988437738967512245188959904738727133737563117761971080787583301736160400293805409717124384135336312721747804675574094352330876447358481225259079009867783896077097436105306440866498930179807257063168589264852152769073393212330264030100360246096908569710949932154936446675291184980162442175682461438966796836717754069853043046901848947168988472806551473807670041518775945525331479686133098330370874189419595119149361091543676399180419856386235898379650184689278815390627890957539426680186885989875656893994719857045699055572628272805269845361760373622775389121447677293927136798595916195728497946915210804476754795754136387571483349597001722051951338703240690269585391255567165547632612264381186231486830619061444582073641673975298138762925602546382787185294824126513790387637767297509216580924633959892247999085712106898265038493651492415274035773748239686789679234730529688783770839089652395386518940035109965623443643915653307871495155102228895705281332227343656514268207198136659330602492136404766645280818483134159820491592143797862045780599920294186106940725272420831488602299462819094017959595160190792064827207280910164140727509446058841118914297158227595177657556758756783768650930016072722366257575027914461011568737121676217419933272856162721933112562312434242873384831787415256405754904526151346946805920222373205321261603412432580771466721794117738889287824441743564334796332846738553810767974116790702072703169561642151739955311546312227711977244793558221745608416650362702230565313023233254449650810760168767695802433715356067562921601126511693200250603304438093823928716132823604109991441181194874791089855067214044232309666840742602224365036506438861416156722625837538395481159103288051694746573311319066584071513354890979920868341996676961796983443435406277273508375773850740297748712519041209061242930772913529640312013732769320907962064465701398014244636848232737079488069944014371309187732603404408797751095472060054147223610087272071943289399104289573142468883308821712223632115491583740430398846258132313165641209213151720735178809612069779618896531934849553343316989203132801343685628386503017349618527291790519620108655340020523646316048834882955602839843384692601601365139362376534212271091676052603823032057941142648529821423168469285229845982944318234142745836530096612594987093663768504478655301760465491064349234741502042964067233233893741769444470838014591586073449890188656004525459250191168628771806770726858899329869268433491705767623109170209761935809518229893263152131310467746562874770201892172743886451406014678582402511038007035286012427818472557795713598841308186529524676632906806755921003278954616192015793542568765115192912762280889033878414663229555273558326729586279106321563648099907903838771868865068455027705691507835930817539569801773041832462569148624551585918158505253386213420328217797637634957871813016355125781114918886525670713072466765647434360377119686862040568198776587340881573177356381854718229778700350368727160355141200883517430944409566003722452949566142457275333452229424090084988931695483958794042622443820050656263067584943131720229188343763628292682903139489651754262301463676896118521084105211977182944763647162717387478291632642951345905499947392026120640080042045163027486199834666045215912391495408694852021323846774994550553978696277794737282675939488552209814379528973934694961031937929669238060245254981544595050345765490793022856460402765930965642291490444663963324025549328093865299796810686642833619484556128871980919695868730774511738658754740867014403624075931031504334255044439945620503496973247869032338897480460179639504851339420606514518921960352510012681386609640371194644073198220806995817251961382742412062539496582597429068952384187388177864386372449355622679209288653329734326347712466963334051211825536809170144878233565083504853264646097790382340320207621723292238899909338100485702756035808471777237589966367723736382750685754237583533198297324365930558679440939934023029773259776793947640263465965599172089517247829147906812562021215924759035356197453638232777283992565697526965189775152554786978015798333589939168083015883845435539240436247049035142750008625028930806053985797101291037145663733798727027176562013950007056555554948882935493855483418064090954928882008487991366058951686372302350397296065163160708511995402675392977692787262552449990665020823307512922574479794034603765449685216826776182340898439496961781667822907688948561731402943277394756509857351345118235706310930355231244465042816656218258415723607970047530580591143855059807935482800573944420023837035165717000678565327741079969987810407427909605155082415882043815832474357941235858586977948771202481495474889437558614463726033578833983672271790364750589685119592353752463751673135104246970967657671562927074088028351694638629987512817954031360280884512534803700325138805181232952266928527893909176508786742675034960073737160461612555199774073228431058311284508369655297625183989460097663975709073365386433602182356933199388629025335387092765007692303452552195893709969517896424660999023197045229932405020129239161285719439973491848934467704239491954777513820528922678244838003129632550211072034297462876364800504088749892904997422410118118194715782012599051088171127571134408409887361334908565358034463199931902760852653014221031435421058878217107778058488642634438558921600561786100654188620948443914963934882296217805222868218258474218511721009202744818459232146789346296201741478525969432666078581397535730105337328434321140509081098981723589153488053920371249740510986712098838392080898352141567911422967106541816989708783370862455202384901461418170694913240416945654026723308441357718593392092623416407595224152005290980248666890319082875825928614073159175814287615526085671513377507132904529329029392748920036487524321650443418726083813535484034609065600950224910741061523881901935535855760964127964292342569975949454887136975393903365561330279921116427845166605251820309375267462790157696804294453010153967405260777880788809960610688019716163871540380610908766494177425371979252762821689402935089250756131167876305992308335197618752850740059662405001165114129764857060977745851862701966945462510733766993210307022230395604051538660603772393886868113924982750003195519205670316524507372108850580968526984938564781999327120596288756089774818038420301465282881221634634570616981049531127287165666784194395653320255323928793953323389311050171875892305481784296638860297084679580475258898352040864162234505128817410947791515686302875614637093479421947858172700228250867674418471770641893426345172823412426894404341093810512141513250557275221029316525368151861092996876301337440680612941498505260124881516238827947451512784678479511174451179146592056346052029853507649977876143244511931993993983220199107207363068753979053939597701889085338182971470492905428143919120665992947618309332391749377968463045268334935667969090417884427175622059787644062135669982994181655663282101775604255721431028877533795009956333243792353177285806866445515879908321928034658185443386615752065597123719679800668882962479108166024542693524197818781665239564052545792844540822213758686860350329483610562988686961243685902916226678109717658342485041050917867149610055871226994064012505362508084802079751590964810394966928360803673168496635712932598158777192916954815100635915081074231381190201697618418232433352285926467140430533350716304209536556013878819869100750469899345260543994162076621431785095926612561852132601703246639640225018047277491140199132030298605664702346999591229127528986749759547560496251067436613660601509426936879372158393318935992728453185799056298580554803052426233653950930826087458289664852283291781978655796212155127042056398188350678726390028202395746166252434668788279055162932468887772387834062452386429648867007101046347695441889599122717258955681828851376691209712468586283901780360528216876384972352591788117358497030498187481849516214112691945992318312457985695646435342897342556607482133723847140080053143949127261299539150231648129553997792591750730381128992010717052438708937304658152339464846324022473568798890394297444049144338620106446124641258247977235476273465920067376078403824938882065780512685223315088790719134419207510547487957371277436626589426241300970377471017518273241301491684115367192336636152956095023231641222348819535339546377507215927043691653251283796187755874334777813298245309630012855427410692215828472195683191606796624746680629059287964191434519178480163389633013259925437593311973948631500024009916971887624589955902806874306150514865991276480151862826534460142992874699195256812156222806631503660397132096805166108850633860603368951843189660075869645282082918725050711355913727838652235629094177224510686958631920997675796821977093745977762760996804268715470483274505590308572425030961054966186265144119642332495725741743036374702681373478307249111534395517682781869510872611851185184994818902662946643173307139087302963158491548673094050679476193737521072250149579994834323297349862441133691935438479373774614403188019948445216342736314806398524594957632457323287692461833334545894563899501384836170528843689267941183927409508872566335352342074640910573178561334421339273819083452753690619505617200696118631801215033230352362670311201306461489472851619886474031306963167431573994900428204310499245564226040958008202571721788488914069098182716538135203133542926318529307999248417422939925338526039451075865791550958946049706066606812951600256709060233257660350470984156240614350827723325459649241800059500276060909640965905603672273701199663846661910911473981824447828523924115701197500669496509954459388200108876482551118877000540523519843286772386548217023554929141844259147769345640449781394990341141612026295998328977750060043741078852013985519420445982594926299327013330568983873516536555723524927542543162705070225474704099158449540252711358683814363269763513485360442301283929142596698028807463332221338061842447517194540418125077554030018064068389788134066886648318837022913167522247340695984555869958906857169871585795613806104464477120837967418421143268352693099847250371861560995555278022242371934690244952654232733639023410338315633093862034125362436002953207473926217258890503531499772999397161017416058486390090331163558756431530489441380521493081076280714913890515039228452343049366483901949184264619238066304910466407703026320942442933258315711412842865794468693194250760609007030671761085599141036469930019094232374707719746163108553804036269650537107192947743034509356279915149293800036635212119910262787132460173868213341881374878238487010192103028064695996096192429745045438960525374925868493313387091456268861795412402928748380163830985959741114360683085442079577857480306374589307487385538278157473653295795008888634949596609362774460497176959492184884126345048357575949954572549223366885328850295392370128196294930044836878406018670034636757503105648286193851448349537276728074326388986304853726224646484724270002525919691497383435860461727249916035511413728167617336863875801899186367849209781339654269828937502165559968769002804168950954219889237625990192885289225002624466336252802378107457189872651406399256261582941268118031051072569298890983394931890709315081052356252184781603021908995299769913194694821592967608360422874476544751996680019386137394659481064367104504772336485808883593339608629165049258109607363177165720721979845619973354851997400217543806929452399036126470650029118141493535544632426346853616899150296235579088807737585197033155512349715724119722862647872127587003679548400061915561783502360470091042383727566279893108673544555491564912695141854750918077579762767384030949135790690933382963996464809239296732825244038006287321617150363662593824658230831428971355649894489302121702566272196845650027522623816095455340740549464413246006919578840621391504510477733454734631446473510415251304678078570923407872950686534395114203311842858569562147293400517659520828262305684017088493461140156765197958650320971341020318907311810269478841056171084246359846618791955495502862057526969663591220898210845868099278837932823985077077659795907200884198291977647810125640172528358733539213188740961928743944722583138412293043234471410591531203212171951365473640927709823722697917119143672177752063216800138385120276818358162631141703646207399536855596292347377124143085892700380596104285824271723907929268524460933319316518560746570668701272801682833629815894514328464352891528008627839804867881791076411863499458788610775873214260360795084990247181816470183597913150696388392497235567144835764333882231692855403407028458513988698791235872534207841521121593832529232801314379632422688131762902359801887700020212431002301753398332117995783821831006444933216588806152004105762999262461776967309785859481944541997063015256753000063235919942653598662275390912691408697908900681873135582128770517917674863662775945937587428587717796985476971045559994615906081593299676528199602097369382296340417260716421248719087410123729346376703376030857377525923977469888332840604190325100206399496167213146840406022064931592606125088246166598796101942770462953358416494857817890427641480171796352734837423090286554533995777455901650597846161976392669396078514436690269842970259946673639033298241685618588051909490173990149081693848514567251536072816549982648337908222822006708107143570015161893920052567073132713965080599926450489779861528037924298938808297932328041775974974518355921545164438940948200364929307402387413801428790679854348113815379553980183135451873714369750753238601906641396611471853332199183569755757801597160936442020864576015170605918249160278607830003251870284040977758175465596089162154966672631542512501057435563657528672366470238172261141777395118409024716819589467029225752572108625872983090039669958975391756024306640914313656074691990115201659765088566908301798543033885053500983851169139290752910456092603480665589474629767422935639618602615501539190571827452913370319767987408530302638647612413110329697529735665079049059686063855419450198704242760571269887963828773881590498338326992370753108041207965813777859919099586526185841537390230240470015250319187562430648184272410146799901198534312956271006645125379419217647895713834428880307225313953702886926569394143076630076991830899883106286592469146082106575344778971567535285226704811724438979084264571846907133165973871598242380919003370559592727356909814058034435550801696727081169555324144176561648139144357413761530001006285023746324066814922882377464386770074120086358417621261516688595788040613423214859959770919670217475173007893032350933090820060205130525422756861878530740207318717640106783160527849452772959385859136567575656565640033253052060680249744629148554461482330954714814107138020780694095422496615373645913226243035089380247848564383282441300416072725403480753410145929177695957231415254804837765205322103244537951361988162121951434487750410668386548668273372871812039247735673940478234946258720344054787753326224275701124072471265809241200739015914792817314478754120501428295971894969288623909274030349279623805221428434130273378400590770718642913325908157718795536764850858703106119363061949032783525352701212254897891003817087503724760264225587137913571741135622082185122021789289282245521100981695797515426857468996249241762154568773641401879139039822335907163330877607166144492287120464714331474470017574199883926777394007958383116424492484326636682543662187284402811190377964838034667398166783597506338173166767682791285839740930315249851003678980814504887005758129233964421436636336677556821760469513611405314955926610484086871140090770279078494500982531050167144133361249323083680137075514951075548296034247067263000951136716720990655326979645495890091067977207642237778059936881044693677575962433481645047882475241590047693201727464225880182034161612661535567128398896644078589317102401381441828387901534398369579705336719999507699929446028676913357040674611560721351568879456493282305314588234964813816287660060032451889229918205659248385111853734041193891524312283979759867089679759999583672366788771693790033622133134922414742800840984969160174861062811653112855391499357973216347383619809903897710390183793282953661346420675612628826267468234806242397692209834803842920679918343200464396810517261148093509755240794857872395611160376734693334920702908060079162133721004447759988250145030290687007858233250194775472137904226097471645884255023398270673447793300838768571462118965227636730430329298222380881214011205623197003654849720850117130923150431222046460135912331118308020580179560115734661775211573719723757956435146766398754121210305234318627517135346765692573538512769459663337037133606421215401567968980050633000917434608127735487931868525055812099321321334474710369868324639431269234979519224195817932506981989868273445524628419832472311127925091898284344032969083979165059281563732883049716413439531315602516936459471080700558001468643535886896231744170086103348840343221711155591020778338401260313333755411973499436242204857409883453642475544658073568285147694745689535111369703185313681058299195075865962216937379266678350227507490485048777781950016909134908195047263324498825950176071772512127161137568990719097074490890832115397889224998086473603536123381728359084359510120557748947376234335821918072434929096860343249018903914666820944087818832957735455269992986397391765480056433520808033991773109232125000596480747491049118058671395031371733996537759567813635627674703085826584543340003980153817600569877295162450092390854605005030302154457311979871019214337448523322119950649075672034058894686643351417722704801920601944638793058123918521952080435191568686195495234495354936923126714733392148021111241390495157694370525816411605162977558197035422598295498095471289076082165450216820688855355120930947657894222887027409342533059597877051096502023894036680590772648932925355887844068439040314370622907554355681837565812507262118657145853699296289611963211337264776571396429115236908817671284254093491066252395717404024470815801307667296410583908961167959694838466788241623139983203394156420635443634768185362157542801544694364986308804399764596817429457344394066344169004493953524287137838846309342107435798161681447406397007696296968764947320779313746780290744794680287976200076370638493843134025341360935605647415908139389054091137611543581808693063691529251753919630859939937070097009426366829194426701419879045528506544037913532821875696082837666659237081035304865553503295859523799108188485582865066011275133068296528947748474771579832057337573097032588908766716616982209849054830329273598360570239258657034592915230351323101501745680992629493861904668560176313617899828659181158628182686731236613639443140124937725274226782225548827748745613813352560818871204052307858454969799472527610352232797161836439225686192965293599982491347115153679041134818415492432894082830396397119796775637697412285292124852513675541076224447259365143306910090582327716742822629893271791373069649419194381257952331954980012031128615960661818867032149439779689507454128944642841311880645888445807024729933374710347294410450961773779955680407379350759906054250384629254293222492186482063936943979722792788552296227076996524941041291163119597938301373049668304985652381055135854169764299644752369128162655530464304990252679342013650242228750883053682068485417204051621773097311061968299400655885130532641472176911490514959201510456692432305269266898101806497928267528366541917843053790573064464378551173530767235617066456355240871416791303078306284718455770410579565488337150930059654905815964833212586646979345160585114386754917560954834332550867029756086899397481877125747526447588479930150073140810143922420977515724098637928600791869324912686185648453598044032541520227588937500252915564224098999493173486248473500269493939680504846565522637408239641898942040502580297611076671227938252719243038373712607106919133377563753328979122930536474677735145034345083644901133328698563493783329901104191854535510172963870762041239508706800436723883959689627264605514480018929458944343077447929307061567471496563567638211112831692865306185413910002737050973329228871634486291518743391400233943523813325514290621968742402171072147118051783638942614842096083171611234001546245950191419288863347246360099048387116364037238253488919646456647997023819869336083485139272302159688597207280419741037749514634073624359433640232662561409289200876478286165915999235490449565937879296161067080059189154295953409456674162780880044850546302283453298665563225445496082240717458068048563501682470960135581145611005254055025231386439983902779622582167148943267132110294331326459385462224633534617100232155180447182856192127639961015351567031951352738051066502782567973112490336112009762643028166523911710845736523554569518913428880854051119869045599733157237075342886786065730266573449137272377413899306454063321985271998091725905649134561878393066367410723448772542006368267607761252136958438036335535911881928287214129175124120995213572637444855638030265753095826672862794953434809186641080673438549941070909154698340283822953291919730179456793167836091550990323372255754864846666440758937825737046864335858578097671275772665907882521029881783913132040753774902926574219514681128504162985155704603204399763007211644789214256531096958947670502614663800803455665668425562594365889973033878474052444807044625860618077087643350946453054539214392364947550722929266295028731699580921324811992831674642626259288095908643687975144939484105915690934800172314098347327745410430757092408206463160034994833585878194570140157314786061689761343221173027121759987090194671547890991135455364805679498810967375060480397675609160208006732688190513024171481345092041489362300912585477520916297920385273512696313697714993852733836504373797606632085510663154993720429731121449310060763057151018469532384898790751473493317312826369670064351543619588785216484629420969332727668199258571564656759812270400497886805351413683635917335676935101159503950189175276964633748789518770750086592368975033108285858545068490128479866527431445833213721459403196610287005025844900134806793596134913618867695035225277095618582423794324455909819174480617146514112583989713606497912918729610437608508794132132539121237675360921959552930667710965891227173660301063702650331796914907870188812630739614511588235088570076300937111326772999445327796972342590904759425872470794126691055497647360401477839745862368483312250086859802246953032717671989157164680915577188244119530800284591457176190924964271526498954810392867816041317443409141509460649592182503263755024478481593813474584612735249951513512691293828880371891496719705221835181539648258517471067944535261043944005923315833191040936377061431915861357934667950805516014772421669444633595198258482031337784646531984837405152123852780237506921992560842825598892585715956160401664898432990512218624674591830178965011715661901692805495201248741333447816806908555977728388651002609628430792464144575159776056339433676165054297816348276228424330562801561166761960793546282662102512138632918998674670034932916711113343439416236418747229225115584590859352377976895282201192115881128016091991777077876825327716494734263570411416451150655888671172537460986070884833208783153513488844134517799839229732371559306462376952178018905000131193312596175859716964291877000160700963424382639734475675666683439485475541062731873134513274799010669561559885276713800987387228988124955129128324427307012785815555112242026515483659087904429121965660738304578663712495391175445678750612830817107707993378566388156811775013236592665101091010579724922828260721426439279141658225382294308647843293973571340896346972662558983983303086091313233334760152816899919221067338293575760164166745241179035307870438462607166186572303982926233701535488859431659436831287393517087578058859168747612857973775323818042535959173927723131344814934313968532048010230659151958260878382123544895175023311265428649158280046891872839505847949669922497870259850028966764811176890692446930639544905333989895184302224928717302117023035944980255887345854165801779408618018847031968615428667777328772076035831467120896057684005835558692296444634670229333463119937866154790017377985161903370608444671701281874474613619151811162728147332300519113407460310148995015210256521731664728905322098610451882271670167969447080225580338412663307254920582239055477579950158077996002285511666538132211878319752182498876092170932332527747165785701431621684293102951942353966694779776277356001431685459674878018160832507828834700167698337655811362521142099633210640519352691820134577174899146899719500053587823970712870194949242590758738314237894497496771632972255364584584863156723216290234847019663524239828678747314685256057626859182036194100006390131253761571689883467267420869413515098991208685369928733897451896035015483913084221172851881006187494522541351202383387029590027097741702263667416630281170452268896033625316280211372787045480631105990904263331826470752685404108476779787807975653148166585913007842200010404116088655095804782456163710686663088216803292916588090662146393345556465842133965470336697748305973108118276781819827449932147385652672682072654614293094199888123055915620946987941702153381472426994949308698152544042513714864617207489796689947460565763045589673481389171503013928579632179576833610058532331467000864627586250808240391159518218403343787948449410211207628271161416769860963251030787179403182908831429367158968693863953787895453588087075766828304842605218104837094568235648033224244404446031814752617235380155308412230857780328241963184766054725569641798864240387385100166317581791651021717019953968468148092749095951524894621094103156141023935093518547248210940199902920802544182558328555989845121538656696787227779110595056028160040766884146785794040422471343249647266880044290991406379271795161584644665771660098280607427357233915298028769265240860890783797880289668950174273602959821804500392608903558790074106030944209863619284031642118760518148112896540923200906296460299870136606400220973051627096889980838362638060597870679221830864573181321241006904396260961989657451601626909929306146354833646285085615156164106187075040724108128244335653714320176703590415528766012190852858321927641303703623103756857040555617030831495970000670005161672034382673705003432873911292374326286176770843814436803209560626508079917301319352605501123711577750435664163361806864989800995879934908547020705383744791107088846568620935613997402300533809394864667330773049165107808303327294903980820002175498370547289983429267426997066045291937464058189390411377912595116923446015245115908270675376020176462073997386164721171760381320889284236968020173328216459524292769971762774185494815187105920136726350886920238662806508041423422813318128569639690402737270740080257087675990775972142570643347676412081688593436657846789800822865850781473034424024224277891464908123108742758266792173006407652251517119818801855631868505317486725116869755224223523840911355782214610445261530359381724279127826126609589970085357481647907430493007810546184992267276149587225900222879033079213431264991975707074996026024565784771260493240763331338340005371560061256390299432781714175247564802253654640519302615186548050486775268421264916942455847266721875892256369775137040643500889607176482016024461679395121631004421488925808356484436103133151845420972933565263693494656814289362350618278374300729225939845487554567382260447469671191434933800992025961790755403394455701468231423188053968995990241839078684789189486643744434672437470617661102604404330295377657826526808221188625222876570239488303269042245064338853532984458409296974930289225432367947617196738329407089652117242559314651352312829617981157200632881082450528678997914141893174520850114878201876580670991251266996445156525808545914184066347313271405588232349969800251600913942466151917871943215644013029580951671811503270912429473399652701742014262566457904623936645179642659647964101599064526002195198739666012316607875846789313819851640540148422296318170400519486386966195818333440015070340655913463860442011981476402684814743013245773925773431801887475750748778728187496642786458468833031848007353906162741909839694151685681679173140130614853512871752952811929347916700441071084846210455041224197023926882608173863011266644387256066612518969212171132583238098321331220427831099852475297420691517129358760621655554274888699238258182554488357494295911445407013423818127780607874568570980655166530733160943639621860495967789510228107014170443948126173282757706319885120170235576952483006334832154274456494140099758837375034837640106826582044550277360511555373985261580356620253294338497894328042925197176911949341462773438038248371380721734380313926791507530066712318977889489024192794109060062339608038833055571390950625194707004700599889515903033805045069281964862431929748706551569965264332283335548659362986113302578442557539948186382228799016753425692151178482112392447266094147515960740600386664107984134627901875139585652433647706390332778333225348150171448997507245864661305952530206050620718938171133715222117361479998504920685216305647476733690685320163748391991952765110146552563411141117572857130351584250496097728736740418183237170206878973802183862583133725543144065863222220776849708330089021933367097926084321645554512853660008891065005526197948961745133368117842350087126421980218016165588648824472263361830621780832620997874755120624618768363555544853323468151179231977115515900229550379373191363131589610856024206092305551557805120897282979938781705929034545809316206190882160634741121549439512753072463842509285206339102958276989395148687907648505893165517401275559707656101048182300963027578603926781853018274090666656003050213522256258362518947660910461415929903238161674291790171240864216702238657556539906201147202883382777025610387005901163520041560186210522915506749228970377648986869440098958368958408329215831814422809312101839634213568983434168755219227285164733209405191833669273699642427304111644090809067772990951992286928437564152183400739138770178907142862536628820921090192088719568699228884838056424354685748768032781836685789609899951238634987929917158993112408255844343281296666132109995537915421192315742067573796059435583515730531312700907452371779849070604743607023323241408345457778292914926176821947515347452848688102964400892580442127411401879589148693690625308002354837301932727999979167079160166107550417975392954826608300137398504586322548015173371880985734007856986302020284413628514594267524358545216401998655290092529945658849150656625511163777317169059843858073302576880568988827258298849229821915262020289602685569703404103053124644657137634210723370446401309548390241388944939196535731381691174625573635311830542976160253783997206570247730958312376500313690445813904583910713163060581497405804243514306501108063793491104889091362025115233311214277036766016260224057133336746404726256267168443499069217570366034417349138088699469673847597464338777429393063857566987774159051701288304617987280608704002486889967455968298842552715734032420975804435329859008561710792862723990037809511508934756887706320715204033661541172856082129657966037066390729848951637079341273345012112514824518615120871395848869969959093137976045594679824748584847801948758024691113071612649718551620070742587973621634382813684281716153920065269217547307553657668616984664042941838567273238551757194829246122342886359975040754728108981927022532137122157348308961012280549741750360971975534014274785854050166446040495623443248640071470370393101794627197168618416945469772428968955941825868211522102581970865268298678161782095924634093031822405149039295679786646368465561264232146162650115413267527917895054638675230600341665136887815801717886247898579182161165094509273898175742491993103679729408466055392575322937470258074840586701727664999781120547915974756178965083893824430354173491058878682639175268585210082297344618082199625259855389196993315480841949947968278814549841016006617059055541967945121688769732344873018356416298579882379969216079114022062807422216385673655249155855105679316538440930995937526533865539662555366607283689303872245813782934347985084661021174403976622121666270248682464274351148648108284031797448364185272620752396634017515554352819910398719236022469989039000213219864727284978455573807357749801753439592056679675161499907033796380239145717435797738706084715740998458113901014512224273615832972963124354270183205455176560302032697849679634412658360977492699565935534812160160071222773437393223386241067615649556755947975000134632531561909409062163975553759613472762468630901771706989289724421584599280689519548955903827918076914203473361174063082302638192818094784658230853123485142279154232948138778560931547062073619715115861397112058018076131847504100082095925676043845542177532203888587757804980226918656322131105409216880727387171230548447144241077552238297884897119225006506365110788691822466603214853477327642341178180575242370642462308146504819565110002808035745945987295342730435257554578984841974547976790154329931921185033518744314865985931006463111554146146358517925027454321608590791182611104524126491830943621210431966910289341787008093419794496601736338172155365322474082877755677379822184622844687032668933621866338306647625616432840704707905919626145572576305450250018539656958042013479540462327176591545338061892661567342190247718820199003387966144386866921526625241050047512094425836739078132882639395266666684878938090884170716220155652033846211871104741817466715774268841134020845297188232965022115257626243905197747600672611212529081970609851717640997745616564779189145519030565115149691370050085425302561123688510057423192204457637809196953081610154325972405774522765385179745655437504325827336955416915460551156325790411399520696321182846194510467404567602306629622855532883226177621953835318488485939860386696692762021033734057410880327886797777137685939133772919228730648157455897458174419398661155741279746576353433528019539945454557864035175342861231433457754051068980287464735564761408224760834882046169196335649180348165405263717825396978384298952692907241957738184827845159102415693310984799340489667265793462307239010164696855264740025940696274674427763600501094829550099063186711156244018297907084079705692199628774640354696943226828383787537206517945784397341220152616334905626297254662151997996480421317151464660560336972925031177385695869698908208075580641850514174812672110357563597734420389000518898893173966814258186877255253369527958380620383678968625070995801575855172277674879964176882679059434841608775902083979932268703183794177265375131620386878232293666538186663637852056669987189709316961846856500054573387931087310580633000922966339783412791576099801224355904696306225992136678882322910428293643828626769963131474114043333485524599488570267584359767396298190761350779525733071721848399224997142917230720295582960633853006074813180134765495565048321509627161402537219126843672427278085976521894700639687972868253127678803460528695949110755814833901937079787249753867424652697007181678664337653860345656051752853839475902556436996565188343250072710999714987362410916961219748611286334308136247805112609456116023596188935382339794180806142227870543741172722777846571773586858872770866649715511564680154244656654040048604576108024939927591682627322331309336780032132048783947249554340224255164547646695122842713237369275691785432197218037086696384454740620530383854903487910611910832556044055446652663695652726837083822505370395671786469796213838690733075821892700885035576872776252429161287843386768423935220800133390049482446452276838506709051929282973030848964635234746642490672019945556522262917388017150711750760132223756710575671904277978593325546784380398061093615872204854907348935930346115241135385723043103797739537572630947706446898894773510397321998383284168740981199532115961841333782216082874426081993490515508218580227068919876284046528655448903184881645427023868822494167048780982464732873083256077079816663680025308203560583682978609428868001340039041653432212995940978109408392396343835993315562633712973997982480055204006658745617885670495829274157033447076214044358861254108205104661662948862992510828978680641577130221078665488836833757806269484195944620399647314586167373565018924702879498641793964135233967547226832500314371466738635754275176186645362257937396669805937316134614569861037698377013337455107387219947508132199077167096492462738186828989409755510449801624497502722774550037153732615740363319934256999762321884142638256351916376007185271450536568049917781710451238399770402787725216850769171289813608729278900001131988461582225515801093886769285261391204077339643726270611892737949116606146672048375494524664996548773535794183626164823474435716434819129324377750559812950985804811883808754370162039683773663171430912913610266563468837594080797879176576913954605309347678661493534508412946713367661215128928921260331511546183110060959293732347683890060203757163018547278378499585305282071123164731084115925340942756539760485178072210796045624320650187161041622694762774126464085641037578128179193276714571824517542241225894029912724734706516386974997134472791920290782261923102342880734552355007789750080677556904545442111084928075414003739693186595162362450606263226903342404737026762072216271242558893614977946602418069977149804298851546235470297557951593251960226166565155695949754123131799902305653062245387606864119403262484217004969872954458322335724816036406808019391051828686689151680286329862420261353609060306839748108100363069074465493727627772855850248405799114447694063181570062249075700357629918769415704894526781250788420622479610223268661010379940438066800019147901230223889996832282746528142285931944877813813221504613271367919028508655128505840468663547093600993712746443837939329338226998214904156221175915302510083380991965615710790973330282943368508070688294996717752184836267421249503031659434609494000609429024111594530192277635439724760674839191066877622391011902841980284163236078986376363286042306143987853148573179603292850497966054106525630341334155873965032352030860366260097602841892168116855082078367530446328512063482061578266374481888778402740939644140755374352487024052863426847119501352195070314771440203465965739199313526843899005111664667526019296128130155075773039040557246450004666885561484658564545360852341083223261307954523418181556141817985921136263349749643795108069385893196799564722316013423030593368435536734918550316430743353978096504110927012359683850246976990390781546156688627386223405321134589590734891765705183335533270560049738665147108324865724799163344751740453869073041809299735978389736540222069640975622279807850709531380384620527724020393412513921587736528105064545454555133542705080780470775029652678777390056463002625192788983860624725510394320605432017178691596946304940445178711452586907694011881484004620013467224054472114095138201082954720352431548888281189009655843773406697072431123024989769327870701485225325568680176493148997769644489034262609760878775373620158192178855046943862941155049802323633607710528229724059795690702489536553883046200011593454694405710223350009685498957241716868786393807524847112423504214405671695963805578593196348663627981446266461571884696751877824580560154020992270383224074441136256240226393895229358642726911382782176685984076090120730183562862799095402274665975721723511495740493010615132607535090456435772791708853927249239595041316320593036616622864056138382585781916836201077499127425934291841365007375399267483116428297245544390023283791839407592449597484570322655625616840802664378256376401342013801112112752550331256623435707599145271067080276058524045864827396789399786678153210547142550872078578276326645366593547009832028676378231365221107357012271929778967029588406400706920139672000960794452910677250702956443362469161504936846244222771813269584385558391411855182254827281898890231345101518132024436303015071549231566766617053275588537836592033193854670460367592370149502966581559974627052551071687054630715617999598258993317756447408875217273233604136295327018302905137350462839427593793640135819084927056487568457405206456587593849980103132301088140432389903305977688102168249262285852558347931711338752070087180239621899237974392165374924832495115772363958270728059206280446730865717080165969875925184357112849769539984076260717416496941868133751042234602899142115877159234929462147360878486529455291588752745128462253247543037908550019765058866850195905740093136255643688111287565250460121478456997067947376588337660995579811879051830281599249064400711227029098347473549730623291486548565429926234486977626830519952337878507541959071577262271165540917776430097477761645831133603412690378707385946678043871554115920883909548181822612102178581536316278999591556518726229978336695381306629519975411194590547043317461886489853009831254852666983523488278927906976128616746634804018142505229276723931216350047949373446140858791994636897919552145842802261616925337944948263114510378375701862819975039216316362503945027987885588083623400504812228001197280647164240974105671585947461920600939408687857972393959793002550943527711292951943665691135957760578207545225544753701796731819903501106777890943087529418649642208992322575588225269854667581268649407944585088899144100526027416116138225517617418600255996986613896287528686186012258884262272211184105019593851151072131800373622904719096573448097101000813124862552733850257256509763015578929965092299649771895158905847377706579550671733772451953867216521326618643364068233631622905133613396877541776048832381880637385085821473415686520813964093829986150734492958952717643812185235543576930943486775939052626658218100438546694286400439292218875632123029152290947984369731394113359374918484595646373611947766296450398292220422448266087283370937550817111835405631747678345508291362535745348823200707141230674912034771664992206401143019902151341192156998485472144380572578307878551438946707074402312704288746090986800330724175563762906490904355705996775162304714504914221129876879628053582066254811631061865595150063174680832017637701640528300342130717718532443136571006976911774350577540116183944810956674364388878020707845652327440124489350174904800970708765419772994605115923233420867493292732830650755094033861395272019566110255563676720298180006730022997496371055338561097666455180795851800285270347098240235132390052126631602502554798579278857158374419284362425081126335115567819970647740139321362818632652615705401678221656331053520027531193691662168403862297906564115373564833059831278538483583512085977261867125145889484606438606057438849237222513509826492915172566751955923193363258374918921330567052449795655203204990821019147993195068259773241531774388936066133832158400084062089621884653247032135425819174909540583972114221980383590872270348171312642674404938299429536969828552561457414519349911861828345227689181627823029612628068835166414512357447723474171624103559636840554864447734750104025040421213311585310686396844448806867586640671429039178575971015058922839469614782619965295088424590795799427765974280121371950659879322992830201095196693254338894174199168787382707865959308629985131506825930257070944904752350428567346777547502094103360331815999695510281841660045423461017371100252374381885563637607614081270932661406307560102849392065781003775282968647945668082667374912117486128690528413139223170982335985001318540610777193083530457860732838280732472488288038854621576493560541339723903238366935644687321759539978517187344224642777491164103487310940444637503754036362123275150273873322081469884465338199415075996539831225627739531934908844426443925742929377722781660107346567368921238862411117676867498307214652886733248065919167090290345335130261475805376706332779453611792495117376247025725842642180626980363248345690144515003831064020983408230086586439743858823799417597492533726027012383433594991464201791203882522815863408542290618004114447327232174822855790536852289702546388271212781468344547060386498373566372326916831955000617649996182551875173024462283749661117649153724627643374014737747305825272695054986028601781088274163658455938034304590082761071852779155909536771483316760821144821258559738466482573912074274445595323252489455956047265927950003769693435053938835777832431238512174757879550590514675214387941977782699849341758477455808834467124710777652764249785862932290352094401194867972805126978030713241383022164419145554013644009510256399024699178668382393706777496298273420639932179994206646872090321669275028228249834498790424456220100641674782439407777823561888618342607501001235239507955101418891917960007641339664452382779934708430433746077886786980766909839203125970513035402786757750991386210698667172837689475606130911139789013652900676216763240400498564127524350997780654156760680472816690545209437181648984689370840434535454653969345329384844280509108670594978712064546801896619512167695117998633121081183619080373273658088624263366158433404632176125871427073521220641591050840202409866275851976232684246348933483788457394063924729310050263187636201269793453141889593981402974309262379805612539740504111699475909869040617774670522065057440297992173519285422631734715859623604803149917453005815913170676270181977644060307007777067348890064280124598265779089581679455152185522655985180901043285702537351619010457106883669710156610685520917872198685843616740040154138910429316999560680677300025298898224864431910891431508740673142235032265691875422931659617030178938528209254705691729687981677169126067427297309570951328059820753455963677473293417636675993109508813686012785506701099449274247705236059430664713715431481795495661248476607150468949749370417262228644372565223092431972334662650161144419158299564550601929264779882720649754841532797934433472720622083829712451462804969996402378052481536364093824477151969475306387984457014045438950086564761944505915273464771843754448791577135137147357300805527021678989938480076329228262968701670731910263434892394322009828638464463120076378424754389234856205472382230745556113829862462583134479997660035793945636212960067608710447265160927656460686290600024399412758469669266582127544107232712491095859633315961055006095451880558842192917480739352524073162526445395607833413278204032210384076185884975614680654877781129583334601909708356415664314567494528879174460114943156756673379633886529451628062574020054249064892063082891312494005126915875125352446499024224163136263246602926244359506484233465146579029535760091825462208110067411746142385139101461125170287499525401132016748173420303673714751891316349233340551585400348372622792401689457104659762865630367589626168043136764989806934630483651316921367537356620809792999698164366504043483351227344559147077189345792160566654924060011414006458276410628679182547837465008637189808332381731264615937807235624057859882684987037879301369822375653889256418830072852773238634090358019415506266144424001482867978351702802942078624991658329385879692511123666482353460650737984725281237821956944709658917068317649389305072258099180805281576318823984575300118620372995364337098767223381650862641730497956753391510119853489763162527808614079503313975622182353219458273428022850048456528085721413235831816032656254536459273624515170877302617777010571079165235003904255022170496087092628851506321011022670622277141720500816924643197551624068082185571965064175817760961185898019877489110726655314983286068107756074114354405640117668022759335405981681780238331364438207951176721232030610082563041835275302196982904456294029970441033912620669848545725698910631931616278492096725694380449952454689440230522634952371655652789411363712893315178928930730541782549150683413427391196169873543001645973892335304906628895061433309989768285921333437516374300691698707004385114773506463196145147302446570851780448961536822282745241528621516232716943225235366047950886905288424967507108839962499360305279080332105946421778383977393081401312962676402826195035205128224757525591442297775824664676723905025843956918546780497122774649784717108406417944844951700395250464382991262680773541663234515085118658119243115225039175049250683246405072781369473739166932627774938236336856177152699676074530566916286520242121039328032159951284234013051698175926521235199156750878218040448254860050598034481574499671019371552182769030713148098196695517004531921931746698818460101672585593256022494597959643208771272961270204086708361244617272428754968659455693318445793227508044893093680141714470160335185295426506735620520658284591102261085434253659655422066837797189606239003860666905595128150558399907517182570245649183389235437236219124612806948324378930026616794037672189458360048263950420323851632394794750391979872477477914489659730847540804740697476887903307036069136363055429640379696770820824346573056594800679456779895936774554109438302381045487391340682087212512537363290898434859849788267590630760690070828445231837005291618468877672676087962419114339923550105347666828576343271095206062753812313279749181497212529292180564975868278205520196278869161087724733530537747668956822975153095801606697631165107479002185889332976535415680241761122121674897589719084567095240698212620609543898560134372731444135032566306831209132913509189940219049832024775413426834961313592056603045318332822215980441801721745708492357204455061521010385970549891588327838728297982564158664129617646627200248058775216669696438609353530055347386975780686202791461279880980499412873074816010982861177836342417239573789420967415685864808280931510077293077568690797886183188556883467129829974451490799806268508374040938377753098744929292894752707157805655835438509915353830053759964921674179882394214158442584603713441623635655529626114190607486640398551908617784360730629421626621933050649065601196994210236948180879400295525891668718014208527922411511707329979401609200246990977299692207085258600290320435008457792736163835114358314835029616842035230577046453797216473206286944147515047947946029856048802906970487023542786078304378701635312208775132155307794860742748294691157120882980952782320423220923825978465285475716939976066818866198786993110056427037196546169679294528567313835514647173331664536778670065717884944347892627846225910329147075040675864674294031135922486720683098912194142599555281772364577461550392705005369255569368326033069024154546374684314137992371304230862483848420005949362207974897180503638722671268271757812829360858235984880530699703003697783322810664109343103767572972315277976651889103493158358459746202454817440914208251841856428509924692236316226841058134050808474840594420502019021474591250564130470328434387039705499600403705021082718667134569471165092066408563642612784286491758906462111903738230435658530951043103242628008338280598591700483631702117477367076070112086706320936752523317771938680695134093160778661743306348833579508141837183902973250020096698195456336375126329100429890198045569078023059046467699326988923724225975581673234196010339266231815886296775455936425875624144395971279050327160597781381594419003031589860330864089441998507444237563751488092778827192810189805813138590220853739583820210294713147052368476052001498544487066064599613809172372945493836212008604326192762128986267486362885377661452785238444735305927903573086779260124155026945604043217644848638645766790235868612209939138677089462041318617893243685091234551129213156009567353698977269902562692605085031139658741075943748498703870495823567001827800485753026924881162577485896116592752938844259013679184666791514698990180844118489489768485045592818082378790664547923400102251559815032659960351805402645429804111480543653173763106023824892160989506354272436846883700016963629989518641355670785921763697918199687926970595926930402818761918455065238623236800282924911622852796336504221339362258222277710375678698160683833780186767777394486556523526488382779620896930384983260615603999764710587862633424965000022801335303758902741510161760951915269003354441354473639341564291436864111075560401627601548701894272421421799673419588668936302375080821430179014724226328623239054086349366537148321750114015750148897781250156942124735075419771562675941838141849307822978592445808581625343091895067279378917017379212786378220414236670449972544800483141129569413170351844993423021003797563609014643649661966368113957960587584912415195800813038413436351177484984747594839702039314301538663756966192248269729585749324594636551772218143539803694430138493339960875878471950459715836156691996565599744875280316235286605826452965788031296311084067485140509613723368140124370260015509359336485050770704849678597569974687089987194248615978989372006083075719994600496737326923199930075744323697371048260431911023213156184524260577291036143871913475010844739875056263599230372269328512491324786652297115553753733993098479579551875451824677955761423943396206123251355887549396912554787592583137832532191402070677481473650926550191290720516228377436491711727083375288560942386138001047027831544473341205331343476538256431614427873909358091424906159363186848992438474253795433297119256254748865659280061663698695406381859821733725553638916110554704639476242151194540465766976291433633425273946046586723623073875282396716353110557681671286071859015570595316057635022261136582932757136650210310348635850505074326147810811069464519798785451361536950324295891136818920939922106815525958864081909685899754577697489201318525566081864565376030826889575150314553127866468657405625061980005641318604232629447837528980442613811575692993802705717327584508714175930531142843636898174141752867907219990089639404694654945774777397667748562913481599721724613176871783030865948863355506034974579379989433038427907786930902809440696856596132584901617329868170414417141668345149615520003216774144159764370859092762057134478254465286700889628201737826314659663872309440777687784263974435311661485436775686293350876713606983680173809666357874460643728555337472623454654620657919077526181445448508349619695914220304836513325840911908393934642176996610189524501773112670271100037956049905546781969524454125005971849996333113732147279809617124587756824282949798353654530099447305901834033593999216729021326362242485360326303130438294666366176217376470944490700905724427179278046193593039843882208246171370103827636162253912289314970092379245236090849544000416625303821120583091094170551817451286386966209953333380436953955962653565393766434777156966791232517416380716425966732610456490444645737139032375090159466790221873801735494111134676885529556523814021535244984512382523281599859051771031858537632937896776082421496492168966652928092106527073757050614160090294460738976116078141620124737081202599351797212740462842437690885329784324532647891463775534078797604005984470944363392988167652956448352496085066496301693223432788006642621834078640265262126463385768311779802075647678758140075677844949043138700704452187048100245083985586337795954508610497333518745997892080010044880025065920600656158693573027458570142350324468361159626809973236211250717123767815528920279591573807588621539167162619550496347097383406968797919067934644682592523153256790172583376150253656481826499383311417042514723499010241812085976060271754623743664968627059931601152386984846342128308308552941416210076108629074278726456626805124067797190053280186530960088716336042908247425666729414743075337737349846505760696896069571538759697481182799872097550539938378051804976754261743926564050031984739131734609469796785588680472243901565231514179692243880549482544164676292459022879846026731176706514072772768411310972940053417741329724308006795051769703964749668288227475050463363045682359994401889748274841741288842570810965454198672746548542516473240869203507891622513144036620298923291112312225109910014800147158080848234162950981852305278177816738318901942416073170810509163452196540827532511555923874340084991759881135506754621056785337065145181267648633661576296227333758828440420946490202956396083025054407955700362185995802584487762215688715608767108037293477968444150773268917612602416721727832204299471223488382659414795189646059280222125262193586210169539155168418724622740612863183808859139724435282585413064617735575017888870531348122058719202325464307201902131303113972382605733904678052552717218477185306595484126323011658368864623662067411229444694428732085093149311567274207479156406813452949338478890174076289811267949564132668651179971824629300167611598002372973214930333247618869729663646788387299846317556699929978691753333554715487459571936668397065457164444314188455408886969004616104382462193762618063172772433247935268911796711469828430029813856147990454334345069522433298130960555837123760185826797364081058069669714642416383876444552085774533686752897766454361744492158620700768987968252419267741231227363871766359176123990943163486359522355206172869693338609013297911012149415425728464387981363360839588086523881500532242779054746974094518353810716114113739597116005183144023608400734917011167496303037225028299373256883138886546010760025024821500489980270700402914281094095036160549783546232447711844150893885055293907644368200731593146065357472921959193207954331098185704864679575405933221888957987915181902242525919475365923010048489733607255541278490974706094462174557595249820039315573679762707983016412421283194543149046079188729934244270888302228699771309871146196849641178093099400471961377594954183413612156022473690295344982977510448605829008650537192757384062145392049893825475117976221261992697777706839099282675966994609341610993299209676532845899476169884297712502769291877036660767673739236985779060541300574110285664252955618979612033052672393853847330679522783755375473825298941521481727264065670643242821051305769559452726514604998984885380588478488947100725456178680752417508693415036008702863282404547787330862189663338853436338317655659743946419754641583092429230388434401063494925912872993309737160875025418329374377687989590940738950168158338767437041807157276308954664081348182565494831452088422923094834450090241611941338206495910377607231670947467161995204711557140349427357424279759267034530680496657351416690708490849267043683250837169941915355526055419537473534600685406766160958382464909472720681119005592718021711460669500732873342986910617822609938749828988433499822835528720080933725112302255599238506985150734204333120644303423016786589802419938642125295987193617803450261059206405313528942002489565227070052827366031832955626908570471322253306074690631722226421228358668845146018505171690295013909832994003548926282303856983573239870435395159204090653116159989877289793818838630962523422664112566244016934865391510005722348738038816436712154905326758910905495012012459566510136330531121923932248784113487146590018098969124631107302918320376461850894871554005219202383074033864164473078983841527386884535757530443076442597224265500060132370297408541618785249239756564173981578331442447728781423271213906430466347314379100603826070365185070294068369048569303859795775313378461642490241057682367605432174441528373188964401407538135818673528156420984797450913651627364375706859567705590441891914013130977968643778834964644747553924874521281025128394337140332536163917339936899698026352607270520017447709953182142737600400540107609141253053918941842728555496181912545795271352678685751076758497829233371579236093531713199143174793879398532210345753979735203058393186194406515563442155296964540045789555420728022005864866217092557188510072195716347983106279223429202327472193168559531097750235809561836419114495280247478470159398358061958383467049647957359629728639225132315812361839458662830403945237492265282645132778413813644338819579424634718162705970360792149485321475849556045025218422276719729872172427864153397186907015091185748826287057628836699090958026091384527251945936411959340419228698093658231457127573170448301420713344920400786395011178778560064139720315412065497329758668131242951581873485569043665780326759093159556514275700172362381422269780628030502433767538268106343115706785947928323511940646970908455495436444946519681281684553936933706445719020626921002430065638079847004201472035329602249397398015203173542593759320642566078827247258708187633338911623628507415265273752046499289603963800780505551118334964764048333699984810913451491715744496748160977556782885131376585815913888746093417103911467435563967501335987529597181877677735823081087457140171323650189454874923519358229817370661432791426303558928158462437578713062943822232295014650244294672419949934018258853300935383214226186809357437292502276555286701320205051964573837179444214490667986109605522526839412769415696666619783055094947359119288085550653440448567396946578247290008019322895023861218858067132919964931753401641562107242742246653008901688297058516059598958053484539377688518890969677490045707477679224345377208421489141113715231505483550774615028912844618363482789286067686171193195274053328529257351062907209001846635068354297704605914962202828826385091210824940946350887332610552467882791316323967108082709682327465208398502519896343146232983531072067147320228247068955566546667834065336032702974495323467727675057040417188490347120169097801341221208860774435223177901999205890025369232270496507326020110337579300351235639150072028279526424417825212569692626963456579223185298703775594815072634703282780661528653456309200964272612731832600034635490186834444754432888073299491119164004238146959140625708639738201199871759784173582654778218094976956538348721536169619380311556758738958198251671741431744872137637905675325699312858075666965894635827988346327935673342102839179595722369157994866597574965232576482547061368903081093009389936958529070857467362402773615273854514556950689043791382045274079589478703282016085417979224054684831313549543344083001998397713487038927164919589768757377216682784024983189939246758689515416834926836654904168921613982936801649567332918120146120769349626665383913843134581313722493860018587322413657628885063586321492461186170442485753974258734386534702774943310382750783194391585207746412897036701542558706652122232817814333722212801338656896595711504251899151524533822578986105290571572293468806414213194474241238795568838119780716431702598298967127960141380811591576713237301150898659477181329354539056836999274868160434086460142841728509486708742080446101241114347076028519770577164389786373224180831191962416705722199869960103739177855473285513283003605480300063022348704045741056445612353435658996868581866569509004443826953671591914164681007911327055793818672389198504306686386376534380762992075734559136424306588402585259260580148963174452582787773306281733511764120628012292573968029469497349081831930046015952517404775381350769274466085391314896919128430477346528730489560043930106238614972359884323827480706107690330665976783738465152447254175519017559255216416055148582658171555401970487146997219532610988942281726504427738694208862859321521431818390144822608848328794737063177211502152239381696656410286461702204581357204136482092046531261329187669820994895534173870233788840221027133987074412322571941219412642112381570465927025609636603965683553871628794572280683378810124756531613131388284068377211558671884091606426323104551264224039348285846247510798370766350964621154626968966450126275755275552353823331447768944479607071360879481812670209624360757067716485191074760463171635288152944341582353548834866750035384359130966405430467619215297762971428711725846526997591049282660088975005432697587152538686529428759357988054549235831346785493482746034382420458250840760120466038195673736582889739662823208843092407121198549379746791590417981501855289782382850463030819111976009579623349020066938209621590310637547506958583976025109680663482019500430335089419064926456924483336003612859875539798820396146587644944157817450217987049642571057202458636739758756204245199758838009012882496149304390295101775529541588149257094513905907886609337412951962333459969318049080735318270670231797071891025851005518633897218322380106229922758614904508369443236530234273880550477344859119586069341817061890741415131675319768810624416351422388564107308046398805672534614594648454756309723981143452758495856245086453529348307667143778931986194872377721579512734612111705081324685297710864658414085620538307622226711004894267077323192366283822692173927534822452337723753190096324958682220210972503472429017543557759065436054599151326999554891688220639169622765126677098029140797332191787897422536633033826691326478654729314021363153302164240464986027079871575926978545245725652383536038523419426377446036380677633925732178449943742637135810990268540702427223427857786376103968776106998397865907769259397270725959203253878590544229927610220794508601146402201724844761825620367142967422419778040101301470963511587149641856708147175137306143248254642479912615555749333605298382899279979599071172405197332369146273969632613968089982392060978791840567938016643227082349357255806279697713395385241549911930069565657161523158820022223582200303113120755112002695951958819161903725935816500056945183530053120083300701684982406579704353951168509809637841523073159024136480311814871951249431499740263118459708417845780843489935798381838622255837043939512409279146824898893175520442356118803091029647603856649116935102304990577535633181187741446543040294204286415789527404319661842660318872785210863776578896918967737105732289853490504610930402679617970828107662073017111485411543134557217442200381347610439335690374404730358922204545896524581498394831398615295713604706024298744203895436482544335077247297574800956973020052525765816946796367630420466669447326221219301381279712532547696715193116041067022447338513431421091534046640434791188572009686046499272886991104994075977709030426091720085709110164918889809549571633333703306827234475171721320178296649663326432325068594260134102627886518431075730904094878737151279357030862764003201312760264942159966646759128787775726070872379415478655338101325613486116036535265595365353024969428447438734087608147978958918002445328870243558235486815441911730087230760151760408185580353619571096423222091317766645002917833110332022318544633931420391779093896390267621376713219625012421340479767380260327259817755100276715185705580388239141920874766380382618437603904278919628339444597071063725393072955668734449317320605953307863319174094161866429275468174949354774774943504929289194618270007330758409108725034959389114379755480288505371069421206472454633740538950283048002247175183790340833807785582824725438265537535052191224974525025307431898108070849627400117159596592635867182780623799072487854512656831758796351675453965898048955754830513504783318292106159288770466119448638909075410350564723203789526191343664634202312895422674442002633688620462206483686150816363525692960483507996011528518265898999499817847764226583584293961209650833534379312471857261712391011158260088862801525182116773468128806506205201553781044796835177317796560362749063480460898012057365355809715103746061833803306149639569059094684663081096928063665157411358387903317124381778816458123090140877661080571904673118662875897263304830442371509708238050500230339338166049629628085655626774441382459668837048521982341853665599788468556027352962148948362506428155165536913159872557840940391233522489680673938585022193900716799640445918919720519917429396037568860293623813527226507051287217745738840364709260700368268141793987168095782617386498514966284843237479414982188614863216167219787067777698755173679312850010088091886774881342777533109536112266368990218955849164918884570695061572146701630351010284322966527662380941661666219973677588380062165231323167136136907770059466206649868406553376672918411538466423394448448667742275881549054977067871613628032050006895041462523633255254237607867393557156618978412777882566966258992203576218212342296219930219417975361842465407616128930213391195859591248621671662212459159013168241040242791708136619111740615208211555204406338899729351600515536666450119547722927319106492413080409512708956433948670748746841531404290493440305309763000000666553329464469630059905204477621402171201761497148930965011918539602906996314324559340468357007679621291264951942189946084518738195163595920928263533071462512397242568021560821717436707842203300118606077362027085900529879324929748128946735462478720387881386252993486267924461097201329974799850956445587805190611563609668300492694949830602696852385463559565748631279187451981225044485054537307543475832717793291705209366051984347756624694915963806296571343718517135970224269046793460379526272629339682979876975303076810171673049344470504364083329432827226659876361276171668265685078552304185195560306880058315089615243541109368745901659647826610534110366789080500321847434106698974916787038796710903031229022137722531488470212531001390419060387248846883641416817710980059929858512822105956861196532940418596701756284246994516468871419941409701058296032113674456647047248600902460540641205292107579304191536242484311486776565025461781857469800421230677899833128376381006353633316184921714757041009721591886618701386623011021776745473000798440564396338394620874347446143723659778256774807913438089379537578800834872462395181394590693023645564333332549046524661028711050272188754742480581493983362986525797856127311497297439822969296564848084300453581068733827131194499644784450137160294579849649181594220220696117554582084105088369091256405022954077969600178356981430847619472926959382988838347651667715527936262136935138867788266288629179213910980153190006164350868780179629904953833905704861439914720085474205075996230314121128605776390526503980848322154995428327973926243322144786194477549533083449943549815334452489142739470536999317097794712532485568765559008892802532071971891949413182609484656333382163829774014808285015248122791767626910490446603906475672274175563203201714364109675346537024863750407321200474731710748519639895652089844066388045614925291103443551388701595839577740062303298366831757631866806180736546216932263215969546289650132464862106638085100759028988334753426185858577364826525081131865734129347745650516607978514459057294194477467482152698257151520415408093077625317119940484352984411446317724507328131496362104056509459975024469115492081302037066938612537804366993089079771203407783649498483224847607735674175378119281373518028716030463797241681979110399747186579448258126505707238497199867814766025832246088158836037377696328660695537894305200509445230056862433508884120409362773205380947461455110301834942080251035483249543333094093408659149492204525893494338077925023729429019195127384097383160662086636750134172570127049337850407930349901448261904972757290809421850665099655053824700635775939897438052474495771278903516243247452797471870335470042314827609288371569004305247337192846385384809608384231857599573321867162164525977818905113504644400874514680815783002804063673681822935179867009998983453206094647599755900826125600496366484904039707100428959655228745935506768272606029757164864480713367878250459024920159717823013673709418287034606538246293411602599173206405088814751762572673751914433320296652648325395218258740774098909226821210804005366016659379370623512935521386066087172007625201347075946088556867390702652655668302706128809145749495406016318501795676937994861307810296080626909478087681234681089174832339571772159979769774023771222394700077664622768360413408850721262834740416655937511522561798987276544884307675385134261081819773318044897100926567117883663693114509395999463315651785956443365621696306805122591750973348783967603622976042222061736128730904389759195083305485530179281940205573261693061121143664485321329797418770301292117711165506501323117063489928690054272367773135618924296080478808808948139403467366123170810044396872736464780052121206559040305881158439645703271216750054987427977664061800656123912174879001826648405255785915400088731470203237050529166761902723111472908725167257400259813677280443857997986510629698437389394759396569635237600918894969046612316023532356846548988640258907310264032461455264568772798387966522615299916941163965590477760798191367569102733425648212576356847433373599955051191002148200533254372597305875336345885132143549746133318963917160224391662067294979950600054130261341843748672678077128497074395125448455680950371856622251782014388297955512760394454754639053496664918788464211004549202120647442663841598489717112914633675449676853944249680370192071726626087392677808789236341986830260169059668436171612434851765462861134807546138939917103344177633852816373443649280179979525172587239633679686191007695175998525513191984675851700324921449981531267807510257103842858134013400089875318091855388389649277799895117203298204618128753816031553680580582480954139618603519942629758085370631222268364168464212446494043422853971296980254529041112787573457924064755867681398334325896648086378124682509414321263363153716392928977633030788428788714203941064654468196514906121498532385139707277607679064420800392617553713932070778853966766617014163418020187783382049225394925599034806761662723674020265808705892872783865360486945690148581877724374147198718429477861603694518799866377001071936484409154361055841926493983938800447304999291392416504621824016077183606435124434323466662384535418867097333448532045456871363026659242865695208225558875949020556475813270692573875877758586854048890936870933993384057278732215347341537859516211127529660454379621717347122836929715362842752151835907565185914491143279260402488170880268936318566111555570113845597797661371876074640399029655043738046329951326557041896740832562309613223713532710590680109986346371294337820763277790792424837701258165871165838973568656283445041634154492446239499799391439734301752013128326816191452976475265891253985463858351254608075645725851398974415986664457694156417477035281240074218715035200373742150930082360926411244362463243696354856395873974808117981923237423566803093385630069865169324749091900164071835984215129262186567852994021695419114965222072925651388388480702750212247515726720601244569402486558812717230481836758722799767573969145606412678239854031545535909899104451282393437520344233798829893336980152800042349661980823106176680234069271834501279704917757222487435116193958433433782835939557598007655248064163402344293510985240407281001905964415005406666665184821286268317595107462768730971175450118934561404063323594733157100241083776267753452823586727204295360751048042328969658533654164356048331990259560387873673325434543612962526085104419607402188585725823364198832572035113225893292161438923225559487313886641265176402331497330026825212689503923223278403088808013137022851576871831071641628914563228177008725783910518186522162677632969790598617166332806536594723498838536716227206025541219932843808543774595444496753919790851976303947188367351371196486767975434463206939193564347621560449419415118107283460811301779052884308001870248883330856071789584247220711204011180684276291635308592131930747805450328372362875794887092608069795672489271098461752150355928660718573097680441720307870539467665774695401091702147811232895359613671708482530857614879641437241496623788098075972017630449733019182396902421389485839349734489770690201771609683856224567568973467345345881077533791019198854561804607160567615042393996866458386494669120472366692785671964950264684506193403079007071412813268616096871397208617326810132539708717847584698424857382357687928654975911629984430468257718363118239561084416719823471442299786791685016790106029308942438954629593795862997795050307832245425883564560193428729824065946864869782470515068567608190310683358103997394690872761523844492141904531054118416830511855045395795824884438660099141131914823678865553222132788162479055433075459514927137572743203241104702538749819372700256614632636004469620574506639354546367467710191243526489514482842395225366440489681833389369750239410984803085827824828027492578607044684253282480383675161332076361121519274878132408159638844154329667858212591680484717920310437592017756247287605711554834625435978345896015528750000163211506367067942117673291258507066651046097618887482373511073389271384289801447622883620305130997252717967130360308860250868199199753235571918074870276404000424753115276808107504970356413294102016994476773299565338348200794719694422254849248773536204478610828505512290467168844315281477196278999456792322383166121042778477682087800558676641033615442699405622135668114079839226968627524209938438023441890040437391594902748050114018043208831022177861480008817672552881634984215773975875802843984765774792693721689085331624857394618096618054718849439616368221634931964215762900457795917821640523167614788635585109169063542404221240258702028039564034014255404196953917472700768918860707106814785443370479291882900594041087955303696604602723315404934238602130796612560224399850752442680956859392271231981376237984265934200689339595492207264582224715773689789466833764001270851096543829545456223003568152180699429669131859745394427880856765594612236891728211218186770925506702386263052085692643625003744324599615353347103361086814039625180313372297906744989280291161843750155081620740495578958126023265189746010360441894846023213558038355237832377641123301308633455198341908976900838597885707943710897124795453838650510682690251576469582619965728844280113729445358261959484222458302610238111055076433873674421108101670224533037295218522522637907411124055053669485882221696351130269344974343412729929545708885262093824556722153260654789278987694786626576117758021517402263669961809745284600264637445614149978735012644502971702358571983510980707734756281477624609877843661983736047379227600185328933219399038895299344265023472444088467779687122557286630141507326148742250145747523285667012177645815644624482417765260529418795378010726505581527180924890424493249334518099877414146732728010722333916770686197694016036600412992759002631434653866128783430304509777616769633908438230055774989119972484230796154077702499315625569827322826829448115888747057431689363022189005304849385827107687027491084037092545701173513954384263428637612402130640961519539091539657059855364721797366243721103474292496793493530729777918547575652137640286060503137700374498016448015625212780641576791505025951140345559432170578027880122937175129918180871817427797512297045609215811876975342767644393438588114455616755391476466926859505340440905366843032569723121614863412386395738345060813821384861566344608900682076126573798815493936359843701275831335664692532390267129948628888495293499629114756404608128450798453734015828848862824805425709955739578775289140525935561299816201307432124486765219385981642248601071543721134199602812742539892328217897784751256338112631811454456429862202478854704460898983576923806482114387062567440926556516557336306743056805187525293048865855721639374807480524416439493139308408667074302720458739448623725960726873651623821052017339241926259046623324063120873669486319695138192360130015878457817966415700620598972282242748574220361900680661361905681502783194038519137292256879927661192657916011071189321567773366592842285368443861171609114745703535287834843848496864446379597548826544034356820921508654007765040475679076191095359389228610562789762457980947603318682479639633214488913040873925976994319473346861274716648430006863562437162345448844660398224073959538770723356003922864433672665848847111297307363835890219812161109834478057306551917781843108062909200338002921151370081805558011169891520851553640548783617787102124814482886906238405810468943691885776921051607266382897765381461301566577657452389477848894526795599987232919265237560121325510522456333374048421335492253962487319995013892853302203671795330031889857192822676800193881787015928240996401615735337010179883186063308679147152078095465287874520541614469518136285091059996242764427367698436609823188731120001035709079600201184276405167065688907386993221669872706767905063480995363359107187327524647911961466537519088227693076683479132945761170493936207065067932060524994521657642605458313107919912325624134804074449760062468243896215111692987015631371572213426699362716727311630079813361686808435811901255400048498938440407076769841244794833650147765042874905895521262514536512075588614397301537513409630766760976034466360047549234357314177157785813535586977867190278201925358622070401641089595749052924030140335755436421316725969138973656881857427522086779237631879546695029520504785964376020489131041884968011969081068673928168390092431346846587081581705560600540375483320366207071068554781691242710751049605779518941845436922151095877982643673782788903770326122610918187866972620565750937219228352533022923763030335139383532264181246209401598195084185064124941588645051820730746232395969110326293267624859476752958929999710555996644505808585393749278051677248757499353451337865937231847502981948849990947145530783808472420617506848191720365703837666832969824902874553275637296705683181267915228458973185459295775574490703331540940653198919333971306704179435430314003720483446433858687000148416811977015910088392048038398182113142876441325217835287742924088880763355145824442694384269014254414199463549838044398098985248476662286843495349498300864492692425869072257120330914656492619461780839426538456698955781087115160758280643200198413002959819426554322647942120238287221435377710757015727203537574220779078558513631256650857962527742987047892377335387483534859926311650551444866551164711601591126820631985187901713476730950955488263509349149761942197619041650533283401769730241585622252687462051243116631419406420954438533975314970614254242077671649999715678069206552849846212334790797387198693333375505733342656951874540586511587398937755971941084422209351159109173868095118362563631539544861116022840805830950578701666995150281641177305958266045492349705945181597284421180453159455220351102851455177260590405086034632931496095265342371052037216450114859749539429617953729973546006452727678372831607806688208985666635785414353253292328459662058389108836930745086536031701020431374376415586899582670494311330777403005237148126277922844970129543989803064809192283264419002418958948687671460967495716707658473640695293105181060282694767009438355095608761582618292589320960341680833206538555401626827797800381824993708130435796927913461974871924473710274143913985211779836685509758347592699221933701454934636326234074062689825041091432809482881451398289703107524178602190590613372236637820224545366085849832461540119802892824739511726869346940540553075300303744706798646363651588427189201478447829902554177352423036125376261948341601470618763372320573952003283859357642670464922878344802440797526272144035092212041086634967734427696941512262555412898120891882108281185772012619267360834982631698418170083158435773903653548916390695534671280268377279618115034067460108661967912475593829968036360228541893776711382520979817637266712104864505684302217153801985475368246939280537845383718006994274302380659257655281899668532786121269080148763960563446790575925927675759542001504315628614031525131018913810495427100100133251034159097069714109232913453278621806900443082755215963318153924668387749460705947153357951249461379331171757035788317807247585849976291958442799429791065835365887140058334814065441878053048771240420847890301087080438262519826207680909950051893865428419969928396803594239894302211068987569073847410137077714456714318782351991194388209600582291852399347724556839319717629493944452646291624063239543153517269761593549179838994127321966441323485599321865766845345553316281467441356514595534896431367946101855371879867329404501036345606174224102172824551349443132205612628167082428747287770573381803989990031601724734554733530714508416803910533129107296326981689963869779549621257403398698688060697078556221343033235450868068426224541804480408266392095301952416244844908037763297247800854650991908728770265137993160356582362754707490558018327643776252455569644089880756885004438188911652985882384401442369328956773626464485560639408041160233507081117563280499268135037644408068422151422797462656562640123079464219245266141609772362907668815962292910214438833857682745834235010153124326645432733929534555973756655982389725816723549479514279709529685514276673491044469019471855262130077724781652188139094306930179790157193227529014322762062508198062381820350880439097712303372158492489216835260370347608856955747244876985302804369977892545046163972202462074369700092517365736277206278413112101424368987740888179293074899862068585024807885928908994928064800071066030309330025054892523904970076088877217776354649370382866345868449803610211957697600201528275136107755771266442758545328517743631928804482254314482437659131235792451017085485577489486346816862958734971441689628766854975173644026076221070043577392694740730970934426333130161507955558075269267376883165926785715071874508522792945398317264917657500099253319482220757689085189396676061806891769418805009545653030636832502373080633297196739303369482359196330244332882594842453979551712748888915369698478318063420393865976846827871886208524662200643756878872311018428294806258722985686557205417008969513636991073370229408887919734740784577831453313005316250625508918054455904300737848426875121963266154681830468053253299166432488744815200074812384826803020484382738339296088845436006057376990756546485496093664356395687080845330683826317105902579446606553594513370222258418078240114412926864699392484395465688581374826230594351956455848935059827670312488155936417225410858093931447128769444922743202068959297105538729044833051616597023787461236244682480063005811452065517759696378833651225943645259830532032434243169634833448224245337323177069177458424791793191090144010311651556403592326014847929891208542036428891354200066290354268131629302102050516740753100173378633218499107365446312218782146467251792441593762942184460405445104476730305067112762230989715732974818053047510019432636716489372672260780097339166318553067134893867733231421994280995453387194276260234511826571964686920010773367040520113042656683310965334327730782279640995685523555693497762998839954222478314115467869278048946532189036692907230237502341242197190181805705824033437188988364967111422857613414524955438623316822406539660599787595745615601258810529632360037088991800522644554593466884695838771862113428861481787650753461645101743094566390186020176394854425627852658861223688725039453098458459845230539686704727821042962437794676534377427329915543728573576283910446238722270255972004437483182142472160676645912769307394454334829079220025063910423268074671115830735324721930615169519069860413358948659227819115273434076492251679569059415825534537521209054648299088387888463675241823976596907621224492140416144068157818011101113603661892384199626462967759993133703427724041818500316622430056944951703694145356481383986516605720230626323753785193890004326723940946290152985446992804788671922582627241875435884422714715629304908366920812637174375779060974142153027357600662321093227081584993531250273359442835323031060451265294539447373164033289600800377755268836952127361987823565238414501789783057961127834832887090641477040539743806584864808812868073926151215644903480609732779733739703548461148401353230379226089533311797806041999830782658196521142682698957799887949059658852896095987876318827628790818191752301090174441112142056379985054201747906000231455332070363857546944926158356057777829732978710334957816209113439948551964295187570825329991294943227836850477335316959244487311609812431675032876965685846488906921535688316765723280827711735650936749493974317089753034878378629249225862750898282086175883356471122795012023703697177581668424440354326569667575909047049912073259260955986448261851293912640603147199309817735218608590282700925634487636587582492947982846173952956432737177350267510773601685193389724866493931768535628675313691990966010086480471138694735987773060344959107134566852190702512422676084565694651077079646157724289921913978869270693474895191050533810209559525542377381957417032311974398256317975400856277007067323189959451001380480491160830796143038167790605286219814342028354358413316255355369565885725000560201263030458203398565484597855530636686630275396488957006337011512439874528878284637544974566272466566403233174494709008286652657244344701532797619445479991052491649346299986811025286119790266919241199010723650969586492488898886377847175927648389132522849312765630151300572074334487738219950544408886707815749376939437948113381604796644250066081102014649991180819645768240016387995489285587356045985623755950618733762661508030525155928273918186680858633048486059497353805628346442427886726949283572562778687957118758439786009968018937131792621181403418475939007542640411443296619601109175513086671541601715139689844820232823413558174907143933529152056069039540559854806541441153861060061987877311120252407916153841719436280571932341136055325183138504290955862819596570263615124215560312120715949835401179769988907100114077515365536069367191985906756897115294891842074188630520653152320777479849711585695286197238542972463687555269890587930482774661437485898703539943645713287251480971555904545689265725082196131897207241437544292812413208073637452830251423007782497512333623634423380025717488904219071025929316428139950099019834883603512944375542829404148449126700309668497057511827262291776799446475335785025317402303694773917684733722441126851071823872881832494672588282204613297620341618265370469935211627891882402518266638998434118261285383101274616631687899577219514527302959555530412319132769563158339282880791656645238513712125083673908800915221375223121616473809301552318804126949677984700975227489761853862631315406726889566992136515718479477002891456720666340475703899270086015901509784511177426043718461697222365235483670793913740707321501470903205471755945064265140971950974504170285136572581139770378396883671099010078712183649340385648761183930919228686981413098507950460705383249112657666676117174639166641127611671303943751741626500170413789600541819219003900575658788824748331056143274988454270119872715471972914790422824192430935239422781659839465477021796547992689964107381473517739535435481358668378887603670970194603527132571287832527434145799391522772775644364067006689775060003448388121976091733773949380154554709055191765248193201169217870024340625954764997633713715489404130071596323485980994211413464089987988541184516987350847837198318147201054601146561548437336466405908767909508013063856369981617016770179074567319648507643653450934697695208673241665527285613035317315911753645762418350673562814394361976944298388520669998246504941419095840277776128656135613380475836057528494139855450765344915267297228053177386598679701130171270606366500625729131112869486759641545498141076535340382628414020116959087913555701865506590067923109609082415368363825118798848420534116333448446856790559993451905501839985991491267742882544996064060741566546785998715438247322310440351574011632166075878842525334490374974808389640248838527646794051698496769342688745580257183865174211245648554537581489623085771236276872033767730486655121706495266844232760536649984183557024128878878872156218741634341330074465307881745361254804922214431737461574647793484201544056857402863593827894565334607609921184365780512075896399951782345867812753969726924255585631884714227615678130340357802990104285222493341830013159706464310019687195383016574781780121781316169697025124115233041219267827722849675700755000573860560474128371136377519365018822026015256218439139437809816424348504108856855108770800825514891618616261604512514822816218114789084185709790177436429339925437703926855666862150602996899147488884992557817051990191739958462577480291219828334952203346414210822726544281181003814068208303836911131671722773520327897116597584117378926269118137147467587925609601665963254229102041705303860804876380859912185576759119869030287705780063205916716492108265000805172876092058919513981223496223155279310643786472029505965800514289220304429118335413409335806071047520726677478718769279677007612792674996189345172939328862948668671553416665679086814624955419734819148335009410160092843851388706126938161662934341309124090211288435979531589135344022708864660233545110479698142556103366289659580986310040353343798654911587236911361262183897188793898620614318852634722516347874970815980530795867280241169241617814440526123174127660618335468811060965748940462127178500308013832031337964513872250202371834128557400108086899734810774778396188307735183434697009913480476842822946490051950434607463875287772957093080652560015872088666174417968170739033753699254762821249042718032946803718962894225412638478639588516088196320527102421551184604340432092491712395635617507851019318497331052779582005971382235703403818906245706154516882541855631660240158242016412456424421699152016175571627838298719291776771538635698492645878030844173540612664604996686810948001685586264934037683594503039864565080979815982960601940216602635105511472636594854732807969603794309012286208917609933202120819024038947209028845397173199926519579917034884022586344336030997252918676632147735979815643842513142367885015416985295899501544250859596937222856348870897613236887995115689740074871270215851666644868875577272475535045950986403176308440185483434072246737281492049070051294201675453088979425522641881997149648512995916451821363507681041476224930515628465836221584576824487045726552890181845179944061733624117076470109008136922026541303450981738054305213078688647439105313691918125420607425770332484416042252940807471832175834606335204644069683896770986851291749367826234354135762358032724440270480645570298660973884112521392756135844634679592368401489476788194528199369476050886506936637851442451825043097160451648780511654481357607789089685354695759432567032843026094467592497026284320999161750063699105524991652076201616792023461483691852889651903313128975267680447097948635438548346373794362985935432827988119405273333220014833557881022227171358202203885192613946414535691341878120207073092149038586981748812804695588429711268831780886541768639053873125293826661283489447104239736186188444802973107092312891089955692419567132289403618041138433826089615418155253592736514661909470401858165705631716744690504294707228981559086716277291806536734951703995085784333782828070857673674530800896745228753890544413697820967296878034476996706758863923514551235917371464858008881083939043756140206384722896985586243593277876169733731317279063811088450288713073094550333120854857701951681898592800110472984407649350887553214283474115420000915169059978670110909010738279817914150571640967083576548752468693748931189317233806355875572245113083656825993499715407529695842076503844484206747698119484632939410404086194674608939670854702527199396509675349099312838707443408535358515061467456897946224757019637315763123258959250417727429781297907392596116496595924106321544482378796309840267138912411740110672317569835663548180745523706657760025575283475564008816463725348912840728134897380176052778897129730108022663852673536634732584318801561847415241236447700446804589696355124321986808023644707454927026726429388487012663607315364804140154914925467267414293989601102728752679226009679431466718116505783557386704371281821741630178318210086858300146623851905969958420446908588457715280792383833336553646762396919820183289850845265513121097941832855549116536624190992492051577811315955497197952919305126151265884314425761726670844325701309992231510161469163601460126923583537594156550373192912422303699447517589569832883212700056048561918080629968992719207491003155442799191427691758385804225970783558296796331406775578043394203652556818455063082270808500610524895249143002639332090208862882693980726839477646331016051011332281440520897828561387289099761272090448032999601510489597594911399251782696909667901860595997689894745464728198419853543366268537299380431749760368333730680832054689106273098002587241207004080103531788538624336410591460314480296533958520689920201031775297212310452377209409085080087060844441528362169473233207936452873749136755853668476015532447592442336239315702688742660142455866977924722848888746289917120027716140266329914516589068871777423018014326363959697163493861223196010421848529182589748226361816366010883303192991113469789568136352864305131392981440007577223694319778682029590477413493583381043993354641684812661456150364665198349174175117122263116873536167156337334767215097442670715221287138895415883518468618099146040983993176207637722708322537114087098203752954545804762796616138842904749854093550413403978423580195738682079370137697111921336474578684492138936416681738609973430354119700714015711950046184537258768401546379326175987814460723467057771846569297916461617748860034628426831866343432686965957778867931794497998885168193239142287474801623182147972059278103930376346101099197027882034985363203318338244210560225736449304195551297774754610758563585379490940066368312219454357375676558695052480253718063653244027899334945427764106991988827531871389811979377263174982390268710206709232894427235039834852753692199289261781925214000626021605067473532820679128538092135857434188069512464393193646202505318330550981700932144886843861901568602798992173555369415452142995416444865586840849312354503145444177970845845727808462419152823661639939165427226608622308384039957077826531643628777838709174612164452432030677903604924291635606199851821669311053474507789086739584610957439453447612512998651235894470560239417300687766524322661917171688726349383300721670241128477946957699236048004460320773915563379757553178453071078973305416174031010065285766602054234935889555270663543676071859964500443631845658825611954032488561209673751606040222131804977173029638395214346625326565641022227046759865884298378470496413355118994726766242448944409116269570065439562473467869283981004250125331332854089255886683122059945320761105503653279208376672739728950775860746820621898349011163742619666163813408902935254873088981213541216256060135499655778529791936293272479004641245401240721403292716878932605594747188204951693110748698601500917719110907936807798671004200124260827007552169955835050281046165738385800566969434940215424026215612489859363675532577545075741877907243747715364608530289825042508960235613972497342808800005959050757624679409946347501038948501840305721305977265709316404158280603843395100417605099034973874052395058643287699308649993038628681547799119387660662849666889290876850819186177718280413413545046545109692395481825899722894646438299870912394721485670973040492624085397709346232118903813207186060669372780587942352508511150800517589719625415910098965461645778593961599900863373289427232933947655998821798613706368315280039498193877752431157744755794865251281290951361784692401695383618900107485016240208607590857684329582300864262438495846632826547698838699755647979011564727807007629569462585309085428074334073295721498112964270346562796203131175971117597270151025910446438643649717046400186094641046653679976751255951291494353197342375754681659224773040546674036801860492116570860199886846214282558724063600750905058923672498701734074698008332910955542371194570131366121996194015090842168944749355118888546969557141082242720282819526757687489173664173986998140950400281708526530197819693392779056009564542306366175565530134209979264032846808576463328376470218430951213252625375208364510589751500573379926806232708262058444248234033527093444675651455753713559694371244778725814770566024882851681516540351847862005160966470442939888521286298832993956337779974541999773368833050053981493078552045890661303876346831036530417748297984644081179814006327473719010191826962571614831847669525566914977481368680728495068765855682807059436692586704577882243817408590727940667872992164544625353787429678568031949805709823686038667192721852941614608477491778945230949800035666746233577665106687556847375649687694141140644716793122740695455236602604832461757539687513684524857674774062409288125730063018296772148459079512282878529719445869961862606283744129994912757138510483950470639991932591075201864653299264097704929834769902934247686212376187602330489607080435986181376288652940745562105764686788035137793870295610379416017867646436169236533644235148894032989554657183499334614410214968474041825005963700336681506926060849203579911897769740106001516188937357688075813776883031974427474543354063453656297730140275772938920082206745256982016215322220493380323210968591209693737483414706386754450428934583764950777672002445259917311230107285456950989000577134487737599386978342656867586028583943129354401985871980051620983084450323587472384305430072731738001596810174485605134303733963105755144417272547321841382789065169679403746200984487894479193896070904275604333023583216326815444962037929600074363509501038343444752488314549754609604403698758429349912050785296823484507676344158549516930453898021797488284132980274909784692835500841759247141198308745077605107708814983176737743395912079303569049213178362013181318721822814527463441520074919896900002928278233412383628096329209065876623734381407021380361456363494367889266271264381105098221165946947877779338138996475758005084394769487092162312530045197298647376357387782643121643634607535957965825598209806936292283188653987492175009094182294624447450125218265287668176746561937843851916270216078969956317483299206027448991716381179808719925731303453488464917426741296381612442996103634076208097859235956491996285928366811271641166919810963962954272542296995800686435742392341604990435145953755467463668031850000368057375460404956850530994891558648325449465579955829026048897334837371525306228976425266295028557190626023862893106052081106622229257261818476224121394576339354960840900868033907697195620960550145070881514691662784223111418778629756819405363573526440609503546926436538572303322938826863764505218168668656808226111664514401841709364552419092385967701857976660462087875875239647867996070526812331396764946692882116258369930825991565651956317003430981725264696380488024964747662079104275103665786251392203953280196815607993996906657784116423681715253565722358631410295944784849875005116950867702585632383387652875515528702220131733990547286390215747861140630785211221599715503554800438772405305148998557454187700358190444300973470172080564881366408758704136817382572239534644454720858888872085359831499511807283162365021819900718723996375435285626886763253356368416963846562358373225375744331953059388164717720991801419680065033121196634195743298969110583882212101867523607240805513915755230385019854240431955838136473349278460362122942687381204750193707117011852025220087919362174230522873892944259001614799009727727218425455081871584186709991055884338572060299030020779691977533753439356991963861962417810230956873408440529015648587912410390815494879516218896796389653543450446686645241508231121963846891125444881926522498680686068244922879032437916315337636772316473712951769689844141841112693795618035503676791900714390880516284527334222849216789528452641807752483616855700580506136090418588154917270188362076787963154310066321286771054993958248851453994082364389029068473316242451065146654426214275573309102941380362410775557151713470607061871275583175672777277486892329536252355929980323066530849128636566202091097978006605582659910887363742188086992787537470117599089720609997585190723454819688781489145165918405478295157132871309393297061044759949117507835244593959077974664509786904655492568448875287860454265546598673171227044387311195404705332755585969384759500105237511786595271963630210925303372353694314788822097795868481086244437824478344381168798897910143060148856169029287719346064346069236099881839716732958847828367389671995013664915314597978677396137348469629504542555843944390791555851036420030644193871166332176131626017270788684294819839649446507013641980234997388958451448813575773116561186651704049387014144009875558211683819194137709199266127005852638718556649150628719193233661440401516715863586624971715795761779761305627218678084739782415198074693477461403066700807805056763918047262347506191101721701938511128703182851221194850508174806226399210254303911967638631129780340202517628250854882898174899826762189131344533928234475256650464417672994140242269719418977573900978135575545499621112714193199371887530909403308460877629799087510593636649796465531867905048567448922002641056119884188241213077682180456775783613380488550199035079589441726836974877092101216463167911660589157455054391598410469270424262530462921643771630670691796113471555502903736264868513336228107347011065163730828585964490456280179843224433051144236660671626070228997212937025087942911550131452633710480268509876992579765589731539951400902185565023617735818267617707955822255293751542956018565537380754465828002035695811278656565703493589169805777927555499628275294477037069104811785001299980410680474550226332685447032038755967712439618478177743685457189449862689496718062909973881442609734592893793018026573456906153267094162758401733527966006111249450189034241517757866080348214667655095398906340768621376803345283167290990351433724999785703242213326740412368994525508472611038304855981375093438767908793167703684075708478309147784213093399505282596254436784483141606776210312913271408773872715084167693857266296948121514728721200098537231107967089393394321431919901124903048399194211982244924188322771429824718929555953638734549070290486758929709924512984760610411834984944675303089993993030354427476063598997117798738660819569831164044992116928506387291221730303424419200630144499747098128918610901836362870930578902473782660912475976782785401231499386666309143233430509166097820085170636567300799948300097244507401385312284318399111003770603712243665640648706340737794692996153346827383205699820067523532106900079904761504376726405425150447131060844500723341200616800855285307894059184838846564984795009115321397436115042501106746573565842119928462486204191010362845124910492576026651520071734396660742432012224193889150236091864020027640203581002261913159281493600222709320062688190293024048592886766176095405296510286644100946341039885351998638291233123243772883210737768644255765213626159290639731008886467739140270933042660941232677041157328534701820603407365900987754739124082445110878633682184380739112066023458476742833211518762293225139270655040797036289212419347324164405856099838660078152357509374242392642508106041480632731604472430651006477262602119486198186495570152871915617726390668885785476727922854041120225956906222609710511835054147805109234764025490019966803947162864573609927683612930319166178670169306060747559886444668363334865965023735932627254219690299939713477610758550073629480424468367429915654426035794403598192683259690879973696298016502160388185041461846208057902550007062524441473357204700669703238543093592419385012569365611718953639065826126711577955341219021977002143399750943000748279063376668669937999072498735009839088714838334597323831882950891864779613867958701336237067878373864260862215491957840683149369264336913927743625680414696074627719217860198301994471531157582536978217380501785671946083115894581848547115634240744198364743622616135091431085767605831167620376496379703037783725662849094121349799796144690202144900250059240762935981963621413676091990796790775142864498843632475609118664333446260356449091286253475103908212625301563787875314969479668385026402851366238186041765110633192887265917213387461906519918508964462968515654288040418968085519033496958851501342974273363334467714754200688225018099801276825610237058889325914471275253283916310750335547754375812811087277724306939021816417151377704555392661779908432965442919161083071189628371991787554968139480008188813203355844454907279219039081743707516939519939113193981788707657488614867996707553338667624810590900972905378184433836364979429241036730837670641625171997803238719709607041895057135401693309596231600907678924200633773776684687323273988188929619657085788607088955983965618771905297371585710462436020768850581325437171698767386720505198580171860261666869450846926254698560846173824369892192735121590175752742525901246910682114276024988597181620417230809331176002498341041675728411704367443842029874081568171567770376556324790215115697505485111067747894750451506564743378723734642664306945847538772367903414134217453495080629365644828647341029392067406875790248201245704427450021230201358569882514017792689500541491500816110408203934775098398927382200368924711409668421875867711626638836595180232147971196835593672139570194897538720614553963116001956092258211235738920767664144119593554502821332705878445738382353887314122879276528249427278370240705947859804376146657534105330272925307098055985887773773141889644204187603517807977365427063949607826633276706697367312114628708574303858442192858514173349147708949373749483021769597796557347556648817436605483904822616527315264977338403434274431386916080834456541143874454510959587704666944750863152445969982646010724958469755440008076096006542796285347553516599784127191260650737346116068603616201805740456266788255167788839905359995252127495864220850849299704709440961536798324940128486397520371379553663265406905886085800783502712804686512909220355668048305949142698503259396288602905847880388471373318140009420027018490074056081345514030446269511070975859096206841514357889996743282563079598587325552917864166906700006092107505437484237110648891827730456051085824541132490292493760544449426042210372694206315620785236765736072991990644200085559197356240351860132004585644860785629231885683722468547999652856404220807296069679679546974275205031029459317386153028299759556587827463682735921700516789502848232289899959834359020063399657039231329069691534413238958636898727934503856544370097611966170000302313254899761844986183211410881194671681678872618385268003862584931773741943841222040109337671393636293556561390104464629540162558965283916753670690099271392977211801156911648224160459504178685833255604347391014815060453232332397158442752550723458369938811593810821843313195421561563848607352555586913862766596828550788706474884282649270397706700336929232642615233504124783724216681055846378010651487910697380230254852231125676992651567755283093698751331332185069175255944445783630069756449571048557746642311313119215937852938548600588513923570376370483748577431036530852389548541095479004995835984767389144798753563776685791758917024918802941666925348465996362350366734326526878350127944026724180927916619150187552794624183815380852365909263467054035308579893022135623542083781210831269173900060070899615971816819184048611144775268457913439162874990278062190043909226331701757289890457247580048770192193743061056332111060466805688210460260061574393976913310386646749061644712760727577545846566550950057983909298953735420517070694401061630669904769470210849099493431657377185694558388875361481753400304622618896036622997063618494460013111482410161955205898994511779438175141651352903634164915813598765559772688208731547070168004546639293372044117693476315241178737676821389481898084699640877182995576665783665049052883458901626873514218285006080784323423149254216334529583696081376819121293557170511333861226974849278188405352940777938435908522821036229784375198559852651308048257019839089549819500752302656545423448113615875581718963957354566044874132498780728008197703006185220403524958788827926318325739825253630755100826952675283152527491623556239587374124454360600387550209024185041413100425166030920311398283466422679045922305485677935316328731636516768407727653593758212990972774227126340423896933475162836560549328543371365903011933741180499171674346846545162820953768658034654499786020345633580037483892729344649679496497810517590744906695463538943738055001044841380446697077542784784405329197219637189407049875994951458029895401075580142765297841078337106698371531816848969849620052577649056471235816443618686032679272686713409134691768352101316204051777151070596463657767361564293863648431212185869646598651959075810055442983692626183205528425359868158221514832098364593835249615721416321204242725757886649601762052998238894711831075329241699007294700522746022220721625968164153616988215632967417339022928355492387611717273904184430974805208051249030520267720789375237393216429728308893619140577426894069762499927205629840119530495407920139775314536147525621582595314933013309009442278715044341302695882854716074733806322708004158912688378490263859194369068036972711568138301600997596113618162849152791617263528286336299398292157413686806514091216277102046100307885933716550766313022243761128424353614449492102448149551823957615637044028398810334046716059278174211253472685137863712985550029493191512871091738362019693450871219941685805845465539071791839008930175316534347331809691589083837352561885559012959520050897458193844984422503926750276614644774820092105491856581230017122937462486356179864545151399853921178306439436755370519915254656951581765341825646063149033331070591462966944517751944652887611903918430083290619218134315616314648166569016539673659462623624320019945793367273845480940330569735622183284999562151163173044765764703169932843291040990803094189813745265134708368971366109245351882951793464060251442427645537036956360615532869634866281111138702021172463133703233802527889602909580149146912571335968305275228659460802981748515989312939365601387498861828237644214378943934260450364029612405097348294388558951001405534526069625002450893596999966386795414299365752571450192575990240085945645769014968520861672149214525237022750998944166855277492474076422589082630102972991761035450462082170259331246115565599707372109221459039532061999550514058823890184316944572710917063053448521358850094732212919725445962717910569985418573197431209468578501436828147854702698349875409299832363734491640045643659691785857710881161590731495853156747776525245399132297350172662941642006626039785775771852612692764437210694811873106197780383817739534628984627214772315709589429489950195805840866534110484662285784373531680738935256526640955176134835380968063712762997434805112389767454664065973173392482357003502439988093439160757752178751861582579793917972053221291019473206501773033734811699594453878528248878613627726794305314005053313424461295507018706614972850508084936189884480767289045341095337299556740039771862567356793688169433560497365607655509909077817724465087014387895790864067914646882964358243845390419748871973912020207805874969476092025579333156882746562257165558045769686060712001423039087986275001758285734795547396492382766819982063297509949463530445032471264529472875258252024694105512836174998123032139665035677298981389333796863902759189928326709649433968843711111734592928114286904542343471295660325984006531274891234672204244480280097633651565510378903443620088294316854182174214141869645281710712024537411252459888254936649521316960782303985700870756302084146360376492461717005851423925755656007311045337319198496597153451317127741468231063259247495309998093066132344788481291837293410920992711238061666362610341528945456473109203805186881506988145542858921062333463266396025684631246941207919705346337673027630973447809417741959648128606482761540393303768066487442103163310378775495575600008814741346865184468452750815523534250565084335832077518002865809975147210777212398435110014634357918297782628887920945091712328127891229162428070742336963068749379359782962413825188189307059008948204932968337596582610369583652756090091790025480973006529387354928048077869749173955059055553611164155240802510843277926908171347177566771506928461604487696460366161659044227767772689137288176434099456587190475113443130151067027331913040499701830238565882540214686375185082413268578203439463533831878906916392188034803769533861944667350239037754212437794788049338001118432356145176898020794726598468807774424337464772740692395391725001588461826743111834299721226515836838036970327479665636659502896086371038723938806681232742800676979287203875407279168840864382609722551040001215165987142862692480784029446411999916669654134074628147326259898643072203291536102937507529368085553130464313372913181198717815541520305387788952506430240725792699830894621732294838197141729652135115384128123383734731623348899022799094061236719601718245511578329248251969170881988981107426730691270523442953249674770957630319110545788504777915891256768161059622411245347120373389142107723757186062699000044196929749370330026163223863045604044825019797503306281732092275046092839598991517975108360786889360132484922465634328987381193556161436105266221930625612144017136003516294385215598860477901410248856760620211825479467967702583619627575688451965970218630875091589961532359325928235185111932929595430706041849880216015999921783846187241022677020257159550169215654452663294151620522446454218080236116139941274245602385887999387352411736081219118961147054864260619837730885276103867175188921360255235072011541954021431811679639380318972875367006582767731334834500267120600635712296809443665149523625628522139466000441523312674888143772892898117204371327412339373074962098224846077934273522280227870910312235479765593426545522505894460418369275137880263392416698401127097353505055262166967606923496906162657785335534567668435260360353233344256336221358523853098020688354240265955054715169680059873084410202207850288470298536342458706978305178703036504007452586217086522315403439188736935787986472637829773249882448842997220978660384011406665241250325849827925923877000046180554121279538715214828341528388209584588078210724445138690300123737615842395646586417740822001913948791207419430679655270285608910232513411279571145782819965220193021681117544537961721314992770527339782660233560581136924816066421126978123088307015139690246188464389091602639170021312398862331187094939427919774917456883420802843204800111443719291109213327930635095768515263542775945167580345353753923415109767000208690282595073237390705691765230971536666981410251194046033819667259964391893531908337421770257858506813134871358428422797174465420446812930602567689219915577504247296716884893177083914557932572436172662971060727862190108018760916258476247181650498983782689078555620545372741847713313237902606452319431362635660873380475218674943082648969642640501907422429133963564626228554385838697737389667581333112238079264227086846348268389678021547923766483531468096512501632153104865666619371810056049432803090183725711884074103798893540701846475686521899097551676590550516377057765197501001143607406995448872507339480372954366249318666805411014611993736544831125713180496587075996077230581555086833340743329795843348541040296476165447483585098349623391382068444864373489109579009741475554966956588925195612250591508479072286043430178531218154319901322059406906025209191755656799144681496752750741680345324485530697621404049581205381870303006075229595903661379148571975205242907078469813598630121800984489741694105860622209047808048765884815342622188440261894406156558619282386581408098730815384025875709819185654759032297620443346766963859638505489499567810704650751051055149496613668418150685170973595369689512408884717068526562330662250802540888184560538588312762784179478466498141297155899733915927961125618121460984781027499609904174736756335595636516716972555964228164067995234276732560663528694789561711986060166645695368924399377049231218524940672757486823359641920723600457636339649271701844875810694472453514841629722685426439245833897112063086052843411990329402462818570846204187074044267957424056648461857462058886814165010510740985477316775204292522095612234777283692221553656440219822436190781914089688377697387348610829214219876826179798975774582719913649067622834993250876880911369451594440502028285826098083944214889239520411800837589446032298286921322800660075572736128001154379211415817815431715965491693858490814490935453795463039068254525816473769153497817075363313513234880088295571209470643573958232685403080544792437040410904823079971452314481616085005953348456204446366725597503546394752243641751743796573929789352364738394898504914160899216952537850169088776385412331896170726817806145916766233558157928829196858775561655923935244196424603560160086571607552011597092641572372109946172898974560219079908434554068552216704514380265409543238776680051144670289070422956467205861047532429513490567533394127252701215657153973714557032453189360856057272788306659852620582971911474814528678826134275671889023535330786176148869467061062082201753252586251401107468314611868897247630649740044410601723987535566873847461208217343781090103761005761522337058069400009445318625249658514419476572938468337091349574603843299001879608393991798030456216186556954224456925867850189177872835099002638229894017506221120201857059229389603817192575517513610194127661051287396109127594586798451755525490083604249088601502287074285126087016950131682530655165413077791842637404365495615601116939312738745080288333990683754780282462927446269483342789657919012164868396670681959756317546588007982749132021871727740522975563396456592499047688227228391070525580683410912163508034111190424013498019711670580141804448338190541390583212240100692578113713214235552077409109438002016350460152892164331264830363683794944160717712651845244523926860060727788764628730014752906740381744553607215511760934854515391519101500102009331721987721419385237357184549624220295486714843474327801895622630112364376067511044749077346280363439152715828176679431005009940989816891942365023761859944412632967793770510793478151959663275329327542587061038790418114247600150746893122475118515036265797578445107978818844815339316192900082152951006820421368022456802158176288987760060099144463642509666020286889904015039595137642936571958377650625557282403404855030921657821032551579165306431740354399251252077036615723755593685596991782732955202701019217001590539562463879563899680856264906934780724244092034853503728791231889588086679550718353536566213869562999605758996721056565933649029862103973679483340820417492811747151250010719273101068173947497378855476595774353923700551118956821749982021951275357995283914874303188060099859118539879987634873053558012332207184070371242948989017883581496188325808826007679723049460776543836254615045795345185680977216840637510245940491091366399870080669789197187391406891796983045583652860763955201594490727925091282717623935490602900531938706006252593563926788178436516576928841818317832849959525562799346606781565873831310809899700295845039448626775948507913842624783687245262311121620756287384782101600548920369178846887409471166931178165334746897032201911949867217817324598055271783209890085545238550549568695087740484034613411433311775742006461200090852947381828395630065104481338073879021521347698677801464075088072414915909103446747787340143248199214941742355288360667073899842602608217924095513605660171868044705882939138298756580952102623129361378602329308901701664193102520820273396532975451832198732159986450624191664692647418588723134415362027048085022765432916799992958372956700890357497255095198891338353912779790663858263220270008008654307773700933773839299893848733304828128057555194324002927653629109275658250517097586925460693998766961379215441781707374859418998427976074519191780727475166235450295937034126510544236313865384833244175136922285849667423996624043731310578402139995454453970170090818462712176463270474142350042330661780788550838087815880354883088478118220878243175791615690470046511295764181137017566056294532861928737279649343902464512558465264157223264963484166022239929863621050167403405749767911434564684742853124722487531268708277221121163555278681257305119119933281873790046625986337933831300405404189473418220232112073296146524370363944549940744084688797833644395760004599647636074915636500383533229707053967066740370135324279400813359748260500591295859809220946067955202243855070731058936942919806077759048602776792333118402584983992537752633071964796853548116062428004291728020997319236731854874010137111321853884872267178773314382417158054266421482359875004015603502459264965249413250358239518000745742000212331545511606755177457876487860467865917972523997193666036647245160437305945377586148775788335019215430954223112325108027006280808678254168329903513382456037403240854430626876349320161853635874698548883040027446136130721856758086636360166146920514891179707147597912423528980750785271416490463144728918706573393959366965948975835206825877611115475901915527912009685725134228267072437868176435182214073008171905054607725168561462373501125738551420588243619568952862023132844489893129247984094850049328259679605350867793840193150484494692500161601402925321360570737500501596810757469906147956004103299956564198940504105945177118162783689248202638151482868893179460606875321525747457054230171671917859397731481951364395163160092468028645836116869575958284731193921201583116990387032227917507121391969632727863858506941948237028170763262189474910634960656038205176267907509398856624663236418754557498265896182279605797783947747681100054496658944384755332054366961004532188932743444241831534640060644031349464140975815469174676976323123793097673842129992928506970508282808328899266484348098816848871814170199640831039291774043321302133599315649928450538779628524691932470603127804370533439044551352103872697176047090020973525564518184934893137933034137527167265916328113869271292691541999840249611528884397026973899736506069079415974410724876962931178594826340234610284085228706757641498818711306193809038924123974283530093328639447809422580646490825724849296743821689061903281144048073554337011832710442121127105462873032932127828214459417310722840124269516468772489043826569435744816797873017911576435929451426901737189920762059746294837750436351616748967638771324604446239856413984152487314969576477143450403167567480399174326226749307586526122687552642228757419718872957559394078387016998878207839792139902624362762521153881478161976735692473893741232203807272810411814776311806314397504799154609923817154284634857392995138163370113505710594620463739286103707564437232882054829506455719882183844772031312660062040916119931543630306046714536813558240208173562807713284038100383419396004528784100254886836281265141908604457640047190237750250255905418600299390306427280040861576956309482138101265365626427581672342301015233734725158330744629368441761302254263860319057063292430482741519826443943872845251306669244102781954952096299763003712875725494790130801876120308047304716101098050690935952375803533698853529636274062324795923006868176599948988717672642307751232261885974889768971513566330441947620901772148175210863347417448897922643601954728283229008583181735933331914697511824044097365993153955395462492005021504902372529978565330389892654486255264864103878095059135919601339318586925121776297969502954466081747094821821718188212086621493504985383382641919762862375271618596477888357971885840274802215960085389381544210129653056093582103123317588837413059027657453546355854352204481865365650345204441994835595913089050054828096052529960576845267364587151792681776502021534455571170358823000670743799858405560465232311716424220788664529571426460041372738535185713749402850566419821205414861688046437279576293074782704411391699942300558889517666964994925711575452460638882474452576524860890729011746916553292989729366647860200171273129348698920970994638334419510700663184650596723394732762530620652823608768728290760199018383095839186440177728100646697128749474636387322014217371664583474137922502935196712427281616368526149944610921645033205779858989459417686870154844658916799203714381014851390575608883893861264989989778944896420276082750922931952649774310002433877085390638424228592420965575800653960177633323892826384075115187193990828769842027645875517939768070330349269134781093158162343092507708369957482066585035256235625350515911813995728257771052211481344042509302142592953797799845852033548744106503439346186585321415438953146445390697092280675717772906204480648416957712215830890007381226931070290889732466188934805976549073912426001331059714201202346029493386111077669533676145614662096521367446166321201777767738008970292963210900854571477147707400228456465077200893337115360121273460206925173153999862246269639228594758513366437617393534912828015034181921591037011865234356739078279166107796003840665084136861496031961562752402436240344672385187472120330326165840217915623494125037090431198749017031943268910347535215077162093054032333801327150077388108402786569483586059361899147982385546194934162690098442729550928179834161661327830018082862647457505665194616613805852274323720380389168544213361272591856933976841790063047491396943577537922610597420574836155220183925750017977602302884303122416754304995809201184797326703150966253704072886025705867404927473317526277668736434203363116052221191611718550223197353588909329623019305600586204293076204114340898760344113300166102032428451362436709805922010579602698522914216454706128121549559110152252247532865405395950627884046394181700448782836048963081136018979489510404289000617155987796677202021534702445083949328745291649833077696245312855164207071454330456501392613906028293616827293126961985915459650925417619487033677208440210412081096999566581816882019799157331119837575407972426885610100858191303106611999119242590680977887375780234445044800890685321284752866680756378139323404540073320993193782906448763573958698297915578666454101574941148895920300754495657589374346068038136542791129014680051580657488116106023624688234650706535362445931031335165207570813506514743829285044426234320839181691976547639366797745243589854126040528079036237047833778393751334332448251281313915818039061965707436507731348731911235078870805281772684026170486714695885001516581327423914487550319132696506186818939402336197012884240289733074641477153615685668674524767785944376463680492079699007421300591839774419993718749206380395271835893307929848616842042446598280929788321105728681937371283106043303613230902149689329955104202495558199849344720305966905746246063040893435715561926025325324385669914375869883047379683634432807041103570433980090716234416622838849159820170555061350321109526781502923121745939305219414615134219740601676957604263994385787427594951518879057237329766183605111284523670539726880617288739537581989408581137883126488359456077691497109222141514725774405307807635983000700451648744279932275412402917024213867470678442743651803803323082842533331646555154232611020981001453414134624573121391503674753809712512046099288163220841573822325311738218864265452318062810634439898416448884385837315046541507716013342361890234850908673408730232748100764090067206344312320876826941224772107400059838008969190551537486901459582959213346924398902142689000855318602488880365315780746247454043353708078491715800717744129829624966752396013683208011335572842543133148917526781036724761313054468902459888605711001913669876190799123120972454706197127270160517803897629788612434411091324986963977773210873854240769741086683269489595197522167390336080448442680414896433171830572453229060216205202118338974229691017113875447093726658660725783815440789121348747818589637310355321635711322909005681461273424938469378475515562342152294881653310950114896812790953129755375372582557946563099118623956884614275641075385156625735878973673787108843061340466138866189764164573741851602778381980915568749002808827648820792260877419776369941329901134708943746010109984355928960685144113386934090641813732757878174888268157919094086358901520750530726084211201422371672653810971427933446183999340484884718734962098445754360307059811926784253097438238857513614872942230283177572168512828088062179707714464331616281711390452118129608804619833970441001236999078680402210936598227486388959034330182963510866599080119901911372556990127493330247310470086391226672343825188881559669394875425917398452302260054292141383379625681986361726883818949799976864656605624963355191714514909873677801897398356681199544289735786734425186558490077760739135427963234344851176286543874533546428745975742159906104087891192928009043667989240590335992714493653854309320570386290820303979426841096094536446153733461862228724243017391057945286032323701700914406878973595158333397792755115741570632440604788925568852292604223486343498295495132633107340205701558027494226655923930043202965418599823483710365516625537179146068643571593560282162854174357810430060019227192680088549278264149045961549533856080765064628947433091055049405867636173826433822438298829292878445106432664775345789727818522261288534348745877689230116154181677549419635614296186937687405688511242689294629331165110805444640514398984889233150963882005173033443302833770748352658584416269930441028924215005785073752905436249228695456908201377271280307329962967359155996267302878647548529412780917044808738043612416404069212193459756439603691774049254455450773909023147806534822973004222329058438378413888330543361064530631563073387524669853053486822803724187475264531855398015956734645021797118637918148776413692401032098631039595775761173886075302195261320732451814445876957193273205286202903176773317820606120315408415742237123179558210508627207811275517640924217184707315636786841299341564507212775260544101226264214305631160955201190883447593180059401940295114698168148087442584375933511209684048524764884519310626273488185180867661923143300081462404218462872091054781320632579466189179299235101144941429968895694383283079069316434855314050824583892696584333870618006027526304171084529074590995400335726578872826632936907850310978126951812775384378624508152826080770206779614869373204659326510128214456389739036383671006041175743591038370155881782661122114529990269258202188951686402584931914432723118180651695868588889933382236550683886290382483080824284488078471721084553137547811580757889690753684651154681721464525906062136685459238098310890082542151203447363773167158939962477883822690851805652140587459846297810515419128385479487263255287461542897962097075680823032066743164360411638582008350887542227328355977935681830351505756423117064150078599463162776019805258730622172749028214426926756476209403790964795230365339229348153616228695517026702522504821807283334509616168886289752857996197572253922106632520402059302043752594318393416434638639786860309120836981259850308224999008471995857887180983609391116625942823751327418847964035630570132646775234025071981534803930925440043455870650029024100267542752000882672503097139232069061865467414760508833612863945531481447020619249014361323594892477606769400224975020496661401988378190858409833474617051007105710639741746040040814107736163330712136391097316208486300901796196306522606091741209096408035340514228441359466240549609196990999555992782626908689133257285929300135208308404344390020453889948888298533501844520878614512463384024260772183949381139664862036936948701197619558376008603751124719646928761556242125989148757036445311958061649385295349356418618330166519634386879912092503964625123391368166756822928738072567102707087769195959199057246751327404362340749115981039048167745061813391093392874006506496436178274124629882425594588087909027160986711979505958714469833660812068929952998053342725858225568152411867051467548393341668138732056562639866344719223739431727621145353713862211472048418697645969078800725547349578174236212605392182818149450076504079978655226519777406569271134424334450996332424349010522940499310510942689718194009032145838475513987127552483243295439017346636337995450383957274428592992615431377286032079913845569970880399113456086090977133351131059418204277991762568451046188748117801904447304978915166730807391553476409677094894834286236229726958331743714578444968453184595198461416882876299839871868606653244472686226939061007348536531638348983433906783903068949092543221430701677477276688680480352376873870050591876414043119896757177773364425333917977582253251881326090827177647839115954261327610416055457950345148810282635560289723979211173163333751966545344438057605863750849440657486964785633754265964868839258096365072386980489839489561926265935486460538636944414790604132533743065135377158029019943767321471317084331254260732405589148437600454137198740377744089130742442863524213589460113203432973107664490212214865025191939720798186062459173159079345070315259338716693181051359192893829053446614042234258965437123873124701897606817047137945032947204990209609577319690111948835489933495819734403090856338851571398208898385600698698255545024096300883616614610661942142749953256597813883550990689640569579211781773418940962320599256031451680359857681095900911217772341364128850032134141906450804816577214314110540470259025609515433327470037083664637918028730233588556298440454412269854537795913913090291029696009635184462003680146453828551892881779965375572106032891500317356857760248737437936767283911343812422730930541000361019723486465631978916414347227074888646393799146341970987604271293309379374662691971002710382934517611043514671097343821741361092757297867004106459341128162815784899528255324811728408258219436761452575776803710321073791331466135600536356275276517437510159889685198296861282135662555958004917716270742601317569252250323224190176431361048597099440892625241851543127321059717440626908721875475827017424787971566172902157815212906698589197510433940713670070953692770657766471648564619319816874187966089721051380794461004890333544888969854022864352129465097560639808998979932649477262000122757970252089772642152211409869532072107604205086004706825820119697404335816646627944973050701605273338809532172910027554929362093420924051347907836206885715396412877918007028575111030224542052181095697492807307908983863759348073340933874786474623216574712904362907870174875356276031738056276850096466315466641015509457878974163614437840339288870803745857355286821198774007368838076813543113879983829047754652413694512468660205610548075767009532368820142327953742599795953287352805945477051380564831370022640607926571899694584499290043810971574366206856145653008572350233884913573275276912938489297526047796788221173755188722742396549195726413647597618775692538639772101099206609367034083676308509307915924381024425764069156995722600678553060503829144184414468317431613197825968426374607370278733981813148124226486015726010917961695379524529473471932926637214218543868296849444788486645341423135991469621132505285439180522058420444947217133808837445801009897823481083600680020747676401153195933155883540658759719352941884062637085546502602348034394252843728866738020584924468027924805820031717583110141989977970089953710262611784020929245123287494838048766940289400826080658684060064316883757813896049882749765003385591982887742003239997062610017333978463615668753425552414299986166703356055294456449476864099100574014854612679647806343351587740016705231352809195570877077671117563520627977456488866629479359396831281008992308887034634443024874094804523076776723256651663654601653864805677015569979129139813989579485122932344307805159737010517225639680002863152754059914620057814594645699075646160738492086064221870219147970075790682924880371718898755921609246563469995321335062321750659308647951071306466522371894911630335069624145322355112846937569584089409239656390872131359367620473047339532712559717053143516408199629668946743577485865803840703711674974044650204825405878204978706700409158532371074154521439489071915126584574514512445107021563322555830562333454288075299458180051795644366375915708705803962643825776718043421875706389634888484642462728531570352555916297387144136817672487551933710086272839712073313157929368388653356049601378248329657009871651461234438874078528827345793313551257425262214704476951431938338694863329476204248100470100730294088336953691610603718225359076381099174222122118595989578564759350972772975413284101297752758140509454412307614882579082142431209611081825758015385604036901260145768866324068687592802084832529877011965199239677605233271581339262050286313762479674441513560850571000725152073911808208799230745874892459978231147418546722407108066577055340742981997207050292638366872325859364697044422367495513326065507316837436749623593808744720019833277575726171031565818452904253043802963099480759146977344881813233020436733373783922880697539378399201688606913495179221520190136003367658857842122226462144442813955033159688998334851655108558947459158961724294105821150865096186387856204229119115177212128867176901690563372387216083048096217850344566555681484392915794586614279900501075301179092008720028653757963154710838609198695115484002401720872879820636231720673321357247863199056935231122316247245172426747085512927460410471603550316016428485074435362827414286953207990754112463509224666347500990523566590662781240718880765851619302261180512489602871797333063691686926716287075454329057372017997015914134712267511782052408688250454019243865595857082291634323858987100330007046940106159003755223841137161469176591263708785058072972984437861978411207692582817082758078455016932089445069800040396612074312072843959585558046070142213877710276712611479194225660138932909130241714986746065024451397703181595188431682181297531246012295033961084553087018722394768334776848548223802335188396430328644328700940552541982197417929370365243181648021053400878605472606861369785484207248355894409696247819254378479090459691310148667755209933912657694722922440030863400462906045716011572284951708996939678146195580025028508406998454392603882941391643898616732280818878802308353834984087675803116792893247642059811039851843703949209367906009747039233486088163256214310100617290983097507406426068567180478260603507916975391847375858555871763258938805813611209814742825254095369795422514858044402948734915632178023464422854503428190935120778028794943733959325883411125632971407498601185070743602262961018949944061982476408203816136968770216645057446636393586826890186652767984665982517524045622570921979633743426718502425443228269609759515712848357793474247703213235181801030050490347194708638416180640447830201947240094726617168561696007394165587295493582488895529186115564535898577116787324164006936041208039399088330325167939024376862858400435080496545925949899716905262718421281665321972368162617580857289746426632281998247259596291110165628638079806120492990077656238392223960591056061749189307392014817068616178316355537764563909652239245882396254048153926236312965425786375220956736495334474412833137396302381243225219263566637450555323676882411222138691336311977798443297724574868359593649814394468449822877856707363923737805495450074716887200048191958800727154383099544408473077154951535325022609352672315495079993151804646825643959890354007821828545390266813026569855401349117751867415964454157556749307431062669020198428485781594925901433073438504462730128266563842954708293529730506002748089541434993866186359402508246212637857163819594044577634305726639018680378564153590882893607568810238455780876372670699365251388725122362251193573637606067251558051343814910479050091895289281849886921074584561997016493429804925216629535381682892244330494895430325449834087435193767522743242414823550772208235971439807511169859611899353536239484916445562983808584350644699049369729090208414605906452352794727368307879935504427157473499419148627393806511783214406196557616212267055610577422138002669722893187925243299137496837583347791806166182376462811276245573335468085741774356226857920315450363141840562279063745318916922197066317592434736355279297274670444971414672897671009959776190976989521764484532024964014479573007207636883388954402845142957256755779182896854081665428339682774143828164847874794461059741679007639204357714457855283176920297813376844461801178815327716738235972554614677835776526018098357994109177628845695172606916064890939266021999359260472775374197322745514886569885352046343284995666549880590914201692588003455010442105443391614893495148172262592535858176814266175270166274243704796604619958587031907466390699748803220687877678624877554588126875834980930871360747862637797377540439252815879703178334150487209502487377645875396522636278132933476162002683975554748831507034449621027004353265036548831994317278105399501048832259047043770423504958430555559833994366222406093415406808622752420126040301971412681500807856281059660534798595531216686273301378667267544735084140282920801947128789416198851663625367420832054973936734529658446749369363963995561696236800743326614920778375393218056819388808968267508703686123875856431440840379425527948783981197481733611461037970725387287350091847305238355088541493983122795216302493402857647080551052697702403478188131183897018778990102787738417032730839782183397134125796013731676931075491184222538271969650752324108571615475051483239613649758440672648141512115701039652622760840255254368612730206891668717974196292549088770938902047832913617711115086496325248879704522313997249717846337363371409331213120911631071058786028197634772041916631578042747513893874689447604255254237785640036535269696356430282417447745734239737093418494653278146419280031040927687855432481757133296153888235590159817752754357539762641633909281935455895329238476363144890122537544672463987407270550365755040706528821421384134490446718800167623500647712279511296843844102847910251155553599070861185411801406544289461847444468121280911724309510966983176117646420421932342364411857142021068330596951609945791735655247778796825460084639181214327635900151394102206183105302595684382464056469260264543860215908338034344041207934141072549176968152143642968085925614700089862870250835214374515298637341285567149817538334811027724458320311300217995118925668593859230072004422519398380750775161352794715094115614951593725649065498248104509493002658175691734068029685908326342718238833343266591601200513886900759731875626105685075502006831790628549377477714224251017674075219121039690767784592244270381725927307079229884347550460752053941847825936788516830456916519203616210888740209213202153354227773644498517016901030795437083583726778892188293616236458651219747324989538645053521228266987498914324082726103332969482784790719795559105506857399232954889297745968332373278744216891651198502699784424940979343530533655355775800843557132035248484813776037892637922113892398902074741610970508388900979819460579047973740672363470292498411116739931140655011824162650342467952705755065886696122739304527562895908710771466818041173772853675176211134322889254399409156021506421264572881337623002062167971736785769780083182408007380176690069605486719301322366434717486338060571699897704627599176037600470851255996953882581943510952188469084017698000176877066542580175973563168579795987639768051302369813365737342932595535727520347285173403841379172892166463399818612855109049061638418958115617251679906894134916046515774409541435806835215513780063195195787688083118129213397634165632502413357395907786043232962551792195386717952150068130540256721505317447004552302612893022550420857633131319503639475745046252160897667678654076502469161841685230673782433674647892327960291606113929086681028339217646527311526805756785408493687499377939248838055480302785812483769777818049937994670212298667909101027035643639147009290737632762788613994501120360971932014230884936669299362222214842686988607878909602173586492575341380283546871496436077613946858156548315255563485558090061700316365091918219380902992513438555836903619116989516369157669680075488661464518078116652197834853762719231417334879492511051251357770887254869510344495100715799550933778791592671344190324894951799038086688644245832156753507301374434139957184706678991003389564625594640681170503949082195521438024031973108272899841777724420189585356082684414326521358173328301901459081542636136521977908761377637456923883386671150886055019521050256670747703464958457291410951110364085028492469174746974050807702352272552364043159317457270773514627343211464939831113200713919953149445196402222652214300236051817094808069914291949729810094209518377425574963965286371646378941788556136936499087825665222532283087870727275736376782334968322382423847125028652882177033792207522943543697473675464207815435244589646356272552872225479908877357992314123289257849606991899680735856831767604488355432219360213487458371017677596711167559965516551683046817710513534854189474888300690175748779125083028894187529571663449370415952707397429557124828696488161078106433993720371489272499349630992491853852268206894353576901083516759548066893503786857908436057577907430147607504656532394171513346668818473084178029432366148301914143942569440830435396551581127282792153754769080591771283972833093138324748533293393879008252188947471476155829070477657261773958381704098527949517934942481996972656238919486944812929152083008227253114299814884912936045530348601466323150054165765838358803520507090406697178816270965344723160539870089821482352336299074805720291803819883366208049338972416999337184353583706742799076632659741293061391427226297277523184419876842633654880424674429016005714036978305562416553963572993327609653541742244391788458279322092672423087614717039003402024750149114939673289590847750765092505150537969453769125727176804272773137786297402314979964929063662820360202491302823653128123662361885127790936561447271083553367010611046114766807762142415638472120114029661768549676340918973460319555968350395945291562900723817323753973193477015675131790284842143782338897829347260382505141105845833500525599470294842379700716574014973414621708537128455968643543549322091802056893573839858158841787437129922180641585807937359268621031315170993312761219091758451870462388903309055944745077502251393529229705027400719164436785784457043979419506179830618141269383742621646992894777065703926752991551371551509616645590696670342108481885795209408698112294538096790819419400553148189235386331061285438378626217607817991687059682125408222518156192780614153869746011170292456260133283542467477461133982284512489100428578458995421468060359421552403692151008710206302296518738796419469270733828070113991646710880138302537774480517668485733527549944117829221580794564042353969056198764669019202651394452849668593844176017278536439554789593949372206582331720412123639816136611957818373960273611862074790264651197346636373596041103008942301746944898123607691080615911656028792453881001241132992847735397508562841721452100726055094016043649346954261905025637412993729554458226846978841286887370333683584186886514568446386423804809522463970054968860262682657770192336540742155131879236327858785245083825424674360531302494594578809421341324761431652483038213520673007438994233664863253396453022063704415888941808198736261430262309261622912053151756543663625254905010048315180829625934461838244307433209467842184409098606943583636012413884609520150177272833991277591452193038567316103969772071465287910998957085347939440964080894747626499734413672338694167555551481797609047503794111257099919574589846498829147628326718337936350572882452493725250174633770047985078544519098670768077747670530692951107795696421128633570531153032532322241167440730192186129272122237875179650330878175714051847368214981685708510642848316004031462096721458456695867269242573239983155077372198833645794834892278518548645271035023086593509159006537730326479820678128277764767260412917047121231603258034298922376511336470303363562572132131313213811457473610612482880170201580963477807773235316991529165457715135430832471394342276796615804608004139659892507789519797341194886813350704843529697791178229384549352563119768561050186096567252110293187251804925419382117028100068226305762000952829890313653993942402306011831722305836339759316644405185668312447410626795306711963649472147173443349972407174059834933082931623704684887829116372345406728131245146760741970086512813221277871323200556624365796553244091228184070123588694809147979321712685519406780405506928304867376945201036641336248241432832283228081398062842695985857827655468799423305873867367884527014423892882844021421517294147458303675931444657954144876449596496898401301054443931987591141418412975311264051959538969144729733308473997311520982503999551528338190232422459076319735263635914348145478559530333280999750908303643552306302121080035723447183378410884868425860920256163692762500458721418720293644656231968192927510588024280513419223499630446093644483958719769731724771847766876438971376405293485428820232936750469217849026906787757149459471712663198937912869059042952491459197985881455231372792120296881924680342701026259349812125845042878175969650743088574702221806209634629371525433176875742016739986204337172359017428781757170727881771165675865037652855689737188581026439693058076763800353315254677045397801364681952797583288175819256044473910210617123256843607140129716228327759174810033659656983434871307647171366216124847593827127766002385058021875651185314802895389919536727885146176124473177987545650212912841274840174819232211388978993920423976632803928804880260577703761898435530490980098075144365087518440330223948407258235357012288178156853348506880063092879108562258140777257623186897580995379243708014226048704731805850768414045893135924928567875546905797610126815494668555946126674047088402553711913622135987998330686843648491489965925619064991156873250127292900887376375382144935723497357232028473821036423012277775193062654108327762572572534820674533873778945905878800448223311868929070962158640879102490632909998855667490523875355107222086672148634285932576056557385523281696813406034552429403074928637394461600009678073557012071329769317754979807267643449136780308913126404107623775216187825577620707273827250365477824032923239225074400874780429213213576614039482224129268774785244548072900615887290166051518506174467968932612824133594408978910360639007029827640008475667477244390834082095000830928786636964575818165238449125037832970293456277180611254982249154688639143056575005900073013262150070743642592781984330321576644853820571084683062595634398211005944922025991964660225999945138104112182406392845011744531373140741390045156158680526945918203217965121680524876093357706991048338849993144761017021961185868422101026719308853293157442028835172216015442475647243759608966840243104251580965249094001926780654191457036248202031192095844478471662118085330426097383701968632294620045217166242133708132261349915239272147125812402170999203683451986136444677094342397898995842888611751083716428673358593003769997519321131669720526035072048431825926452893350349098423020607340250868951146868778825154656133053671958448979883104341225081409471438882173268040679888023541164786376633036116280908170098196541760477587364825757589150724005648173048338018762651117759496253502564483397564105244696084296110778278002400080418199461069011969403548280553921746375526711275883511489383521813084921079739498525864930156923130283204456691146667502558287084551726383783483715837094337440035252502390239098133702601740981296611761618168916744506117012519183834321793918755731688857045963437508380093227977443467278550669198560102721624920888696192200319310840484761650780892837560902313750079080199233951584046070477168853987342807579919857564359421887752302514366414307372391746031383008630420953943475972688399624997732260487440790295110923408223836885449191265216741679329181735485905025903539932712169953846290969074120291881452411135219875985060083965741413189554662638679856609540568910728523944623468106423470221672603921258435571544911646222593001320260949228923029196185005162320540535329114314114625726062622325051636762376431343394746927811011468681158393713728183102928699754464013811460136718309711802575958281180418537127710171353058081809776554029752315060744144463831299945617795882704859495945564364709628992542687294753917579714934132097215045893422175936653494339159004821108178895186569002342963010035577718150832957950379617838856064538115342220785340622496410275572419871331459835629441597942103166363878338735074966568167711004672907925688208511681689942821545925280529005458581147606371285431628110661993820622013491221657858206789564146882334899053027045684395204553623816519805282849878263084960382387747692483951980437656730780987463777617283070395998100391168959777280835922289252499962645956512360097936090086546975605928354025747483250737290241532380873910759123998939963767102161862657207574383629248449487207034478187272101428163317298989186310078295135709469462431606934542076956335319512876596791776236329103073844692385151732123321258973190951606141381566733664234091810006316031182252136667911508297065288320483083897190015573966762706254301658134310514595405777504588711299418001813668377380944835537718626433596037232853113781002855636559439795891080079205754386840272650999456421411674306711888438766832053794295770413375798521958128597995870720240223123566634671923166446215558895650436282574963492514613907207355626855650547767231141552696288977449627577188725824957907295186326760364037285513446293728392889042766006113177997351521239596704563171555468945854891224468469969942015327730673199661292532353678727610870669797372078313764686174698033892378382907851001992249792512051609501088851003422148777312914336739174082138777189494734388059412561973060510720771898712709056942721303345819001413328311142635227043972585311442739707854463188654631629565404107392609302704065851727324005250276673152679436646977658184048828930237291077589602992212928374060446900954052772549977417258945856275665561464327559367135349844389299482366307634382898064328544243634532958703560061065387631883068874742203212285332590439059070601424368012409652164386754323685191703151392751770518650574620801390002485431896411254056490662868382720221540447143608831914690565399160052347114686821435219768231727737225344147087885909447290256401586808461219423561398090281747991058444871424155204726268766006735665567750600197101725025983975919300781551956797983206733776205526201046175311942666893453487350220209340359571141722035031985483887949296119432263589623791937819693407877967304359713157566546787185759590303978214418592940919139008510484569418246774232562706257100056675377174786378047257233733548988291510475574667874908565355382117414578138491325222448299305731211348602475781617512459897161564511553161520746627831557697206974163305799221564199661064303763232143634687550372731735239687667878308482014930126443301840806863981927049900723091055696386109555449932089321991642892581911814962072736917124908269073996151668150787701426064560390124980770215366157505743513172509343793440990587774573076928669282615258605080467190974249693828657364232789868924043629922771977371675678096109053827047784939077604268465999525591651596315725257292048913151034524041846088356536638336480814286999353591824074445962862840159810381320333995562037705586959845522669175965395229753085557852589065640844677795987190433977115751378271526826062619959749242902156097588778523589344691267353983776260773339641100034827143239804225675355511939073607298558760738435186994181552227193521537221902125511668100951345442520171480039184458320667059769026171798527287265170749235819867925892274282268541172996342509959706164127226654540086670302898972731446355917462405441566447093795646861738809655162734061521009499055508503863627925443476524203759988593342642977681911726256098180857984000710322233476419298801823289566058123861815486607926989880743950952790617019387069017234191399338242141810250873916728632307735784310650458841028359086279419933152887907870774536138069533528286398647980519965433951650721561456798082173929793509890975093894988560900033353477271341302888691961573883057541259830180375871569655453854781334868624184672561326483263486502998782151609469393247543190187964749703925539547214566254527458884213727073139105132397516378349816929751978975647791065459665698187807205081513779600106858111808259737808044433190799444756603161405882411544694685815517240879586691104902391129664565956846632263135919418913776194672610511058544405666086572158420767750904930236921266737031293600960160874816115560143656019397585857547993954345842033618262407863382854023556166484522869877538526508527039990783801772129909683624860485286781807920266823387753375613923333179488935822696126383500358949016307539431580461062253196995541826727600327049595382681568706886533851068938235437429536896679369814435844639879141050104930861308175810709970193024505006404279713011020803728126286678255343591436207282968431662320551496614483755237197061165984719801202017731963925323181378704894096147978348835361039662231473003662521884648395011889784612577058239805052945348310140533720885995659246535770997119743563197319925133379397310327281195379297282883179215977174846156423762177660098356667098701102481053697685478237639742852339351663981423472429041281047540340002299399724611368458232378668944087859609891398914006843813796879020964111130257028273633342447296909146330823204560888988340857696612271053904102169504178130489005192361085618890157813905616193848385121520307946442521910761186265341579917361957767736076982291241106925983193960798483523205898195323569538016418069764621715964302433240193072108456103099661610449024925028497194075042991195604781481678755188796247963099731636969104727879352498720263800088985996285342517349957874178417505897865460651398317737327480489429848771146914569287743360717643615971448549477586693595642876099666636687496589347967112450753051752778287130993863030005439562127898629671640192663805334031067056319955654696505890929270600912393630345466062561999328159567476690661295481626156065395279887668151063547425749149496765261380564388234484563694736279231006173886591037945580028495931768371699413269765389938539897615459810623466133294357232569285239674489019477878009587933867771401728102717903408611234544769959745722864283058446483509647100164475807211242830968044963736246146070188121578422617257519941530547452227926157774999369924081172936334624617180067557202314176090734800558936154290878137402532672450807073271193433841764477810933423470005336493944489826818426876409306978555362386765610687655045644734842759574803150682201162872327715383687411069281287462820101657703914756915027696467800652453194273996085295245630283594115161057857666671099930327719601164304596984929608530372237443846836819476404576637927163702826649385816034495138261310981155181615125808521835078706907513822373768364295765930719381790370710307682259384844167111969710351546879903707570125589735055380515082134754407810031041417682475928432160404354545827418732757380798469373785250738520244657233246614611593668090581603630229074108229076169881451078107191749298931502712761020485968759681709854277139923942901546394881806458528961397526280287786036926766505371264047780278060700706170948725402126413799727982740859615147815526911735271098873215769587157577739247913883661014933673769933414967964997557497527478242349773329769131483025038781542352448445594693862352086978038614282361023826484130974836116163241677390367257380145502611818755912134289509201326960077050901788885738843515986888015052034475478472682455725006537016250526271186978621019785564289045391257802006250509312419071971130277741590640386946804156751749234921280874768667425629995148132526645622099135133997430455580229301768331629593195956327372510881309024535450586497841000024799703228956265098751401874245567116801523777716478311237222759252734224132898696848340114206038408980486745965554501992548619122195841795641043871687077137290627636408966201638474710139870623344040953228669808405984384877946202052122469324780739120199488424598381833679329181954324854812043977139730087007623485877672594446421551583652271288367897257754561481246476672498847304170625218451195343485364002902359393837200355985780444140350660648829954354880394667427484491405219401480300764266102040263318286007369954299928719613261489184925326613119380573904054557913800622574549684370128859207310581083000018416654895577170235287050262360757648067293392457166232214484698428151654590752849611443032904161331646576763381029844774842799097198932410276422785301193982103526219876371245175102273002085855125390225716834256450355131927879451040921396720290484345857546159252524296877401955533812089803121002364251488392130479000185458518770117066630614108288066716513938766576950898124996762303127364739134946140327428679125869257956229516869860288264257446178860190752478969399811184388277227355162552799506376965442784843091032599970530090140225617116087996867962956438354124425703686236195781094270354578935162990437582372207782752695298092714912684852818967076293453432306348492841287580768275875826883053545055292713919217961749659588523926003423558334781823907885112667061097870561623821267108496825436323710235317343809884499347273661037666329729166099721470154704199101315364170122321897370684484175638907008818528017432955310069752995926599005771967670726162523031759833898561509603909609177314425346164194000788151405195607727323542334651601229351299188244419990438019104410099699092023150059977418945321499066323111027798871228610858339577195425952503333121905808436158081413869269416654383126717560209115958483287099291722199677039231374867994881982446061077953288847181739940014372208539109476391487321037392600422926700519662535784136757240612667227045378627713539612109644682817055213261504204201800019320158818277379081303292832589447052281082470951017421388065980494706318042684778935465223833047902344034668369951917700632259779077491516353872882147958088770416432213726342067631643421017570609011559703958863582461618074083999656205050849756079003838348021711417240919168416669824940018732203329959359814974125641441915282395508688537744539190413497592779739074372297621694229455097263864809763181435676091762402658344606372510135185275257224106077081110588537332090261561186144507411435453449285051736325814528489362485121388518060126097291181496800703344028176719580360175666041793703637678567803418627704576319680402202148889363135186715804732172015108110324208685591845582202710924646741987489211867253004637176743716961039496518910213676892910259356964475710233574693895167692012128052413582768062115307869039293122874436622263359231687091924306416997013577284651150178918831222409945506622574580090997483831389709657244102352549789952561238884992226996002556060178689388502394910530769391992544858927034551284138156920979191751580726116500216732398586421328476274629431343058099173909274585730513692368213350670627554132880452352403841548654705282985937256204061890103510133058792544316899141753184294167419112259808157338583828491799534159828249370002138264267252321590302510041329535495868550925313746609646346468023130078142098760219481169686672540914851527015360327308150523306810649256515335925761740333621124024653337592122022009745468723836741961948045641568819147293436762568469388153074151367168709967339589495241483453817556701370684390736937781668089267713858849646995400496559669948722307261516779142108835060642141756173983040308452474641267083404997169748537630227236841914333031420955021923696876131829739556328040178150713587191843809725356801262354254020829792411438083564240326996075639544305726709466335291745130205830747339644175971941462165728995212500164816192699691211513208591501009030763004494121404334725676119187598721787177953419289651609715289616800963234449904795255254668075865930501505969556548726054504033543610692663271517017612310316586714350638365788834394478037846173671166648564781824560822802294032929883562936244115138872596647206469957528142724303956283193943188104419694602390154226557560800479653897977605805748734856848804541741018877078327497299172859532632308641077955210450798495633182695967564591019409656042527693038511844321650144461315694706972151873461904575917144364365724261141915743974776241446258408664026591966487144298667430839699022565220705970960433809533569655945840614739399858296322707723749453349172292746046575128949213015087998076027912850984184260323362705944704842095861839779227835614589595005220962017974818721246370655090976041790554240867369961419142035544409147191586960485199582921652602837353136522793997287791509997123786280559204105781706853409901027173299995854992751923814893383249688985710891994993609125378649133349234908927774387702582511996824511908343785495111012676322856443022639087694163078412608363040106845817813608799417073728257638136865628442011782144411877607188752497990890467450729430987614261116125761216772823080880533546080610746082241938622060768955584226080883538543888381203935455932056490052951453652674528260012591877786565113412751984897468248283011306777779324809818736414414147602654732338445339468237682651667370079489582376630096587074070547867679813257264601413914907604565567759629494663302838094575687340931043160790148736606234895576165979856478779726766858751527979198497821882342984989840793872813730055955714964885459292175282998421291894221988363501084034086934898219257913451606858752866147256506430083963175671069577398372737525504281453696528137106203162649169707680943748857182007357980587542220239262352416194764683280983925796181366076859206976490534118580418745249191838071025193088472934322990644087478181056461117604369679457935242172616473806169138424125046310478307555190253793096359156680511428391905322372577705672700935340835550982599040424185580410533897029811585441775373208157159533262281201568114180804218279206535728497342903116199572815072409727654408546556360200035414923717966175388882485783860876174314603740490679414770437679927020303661158962798285681811731774384752455552077501190515397673384719576437144991952783416239991234046370729994481235103858347763852200735436201476837575389317288938462755782566623864689757550021960181832594102265670301530572390179923920327914590827463558217524803119631156817129305650837877231681964763119286580055644732374314922803871486100529574409059755432985982320484712638465008292594921038745755746045783311980512999674343706591046622651873472706575160624700794546658967050153144478105336870134974042071254722104494828969047567278181953222839350737622535815731702262019129153880124005434257160646317914450420852914226326142428697395089797745099865810615989622058574460163958552901769987620085439094187859785813460479447181028207390223133980068297165102129286284305665618471053161118415777089571484217502382190522997692925715803832277439674051424055056193523228487606786096873864703799417741915267184541612814529959070917641441166313786634104081523250596082558103568024282294550018695600334104759839133293153460682101681073251292627085301245206349179619055899438234733729737033192443037650371008681737038547200982021755461583383373463171328992169422459073190466400929403780696827029280616855810856275339974416888580933081497263524004618276175708972462322868084188464916732203938180621942841389034986450086041325541996800204570732007336995114410453978577540340040416420449521860688990943651181236449839650960677490762577078449422660642201696203347997507015349536125038662530139345143797203522652603334466926588769655901622817360756427586234701675298697165811060614832789144329050712021264476551640620639899585285265287774975229345878636777059526913965796706635929536152815310254603436049169568489417332830237286383210480945647377316204918996123076723957870154066513915488452782368967347061258480843014020392899751804150478055537302019725603982691858521712795513333543108009296669102556104059351675684028342028595133466847812754162597037104235793543034283793464971810205780618398632325469489484932203486910824272746945739438922147881463829017809596903015335853460415409629055894382874198517347385817420095888561944913090549684084868207905065984501263568165029476109509080014642916976171378973264458241338563749195830797489067944138302053390003995510581582290714488195281316213303641262015733804744194816914415608706552174285918815300505038304030500911988248387860427391054907326845519973982249779473851316163444223885830598025461128129106080489307180172911370809511604486055600487408444416840123700716569668249586264867003299405810656984638696327302165272235674877063124789279421088334502493038204282028786607068110334306511224487266034620428976001154389452051139581045659270151867587021717057574759020833393491017297619845179601033411935826779104407693795202054147419093528508079410042894907285423585767025130102109880719519128839505082640872081999264808158855082377611859031141617403875504800319159672852313087339575966664020405780209498305139570172865892815795366551269426771668597193824330126496616853183584506691666256863067943935637794295214665460381035398296052449008230375127898071296351238815241528022904076709043282551342141176066269171026726127367816137506545937114849792301820899909460953314382213664831602850200949088013085098030136491090572077640950173743382648128082586242538581459342166395740981318033931014349750426560698097927659045883798512683670563774849339072897279695318141072394090838218365958215651263506515047167336017203936258845834188848045543214934730174398223247178419656216779633671157023039370176998788546486609529167525267111979018402462665018854179811776332277173708895086050327771251074336919405025784128041180456819145547920070266562121512424003247283692835748057456203964415809594480793048721347682103487420071008498243962652115564010110711034717262504704216493497140997077160327910911569225520137397038902365088131452597856384300574790831245992292381589532693356579825275296134595714175332938073583270452491345484830239720327421313566637228594533111264051474726330498168498678663398700278450175031755513545516258763784855346322378056425898704365842769917752108402068858007358307708173673915142535751433196422460650234941711788334967788349514775129569628078134954708818325577049064965129446264033519768204801025867007417298347074832031700427228255651421868781525222769729286237438663091240840892123599838587383041583329033767205319365843512508907071380951428282724278010327008285349146249849724383825251530013582236609688773757709272948726862728314358686434665391167300347461879519798990800516926044011954260988016084505380418922495755362905097360389263743644629210714805880678201733808450408039677547837505167671398240742769733420346869442213262309097315467628182338187513978081441023077646869026152464285448237221066603800521721206699806095957178069329158945018623602825808495695560176960951696777900003013243891350026169972270008462918795069934027472446991360040642837540329369625875365460829285969042463737305945332525874356125546054950449750612074845752296869061425594810927548335888023254835497511310347203474985710201525913789646321429683568105111825513632892657723468388427548493139545071224990933909287111889713594875626871087634244377842650040744895029692259720077421507540659545179849817323812960162648950782582852903011724532279391089105174187914972042005296086532544830895483803297961193607657788001463672727108283352341017626581087908095439447441845955398327947039012028971468700986317626107996006628783910166080041030396184908910488053359105327176968679699450160372943692537242746647698694730376024102985935264284830497257929967526007315093318227075453747061336617012413853924417149977986029679690534100723884280504372110928465042913895411166985057754813967978218597777532526301667831197497610934756147458616550548301595750152913130123603597037931721356341652519943503682834871753870455763519337325158388719614871936579030481070305935520037032644658710255531590250029226678694125943724444641292016149450037761292136819717700245315732319159441304204461886038456192019206295470659235262868018185797336686711580389173002281303055647727370456434902841799455861647092374699793129839460880338400064575389393495077354118047070254036978513933454873338254690522888955154864286771957414926990957625210688276316356254019458743461435708257475620539286874879608622139558342553134359031664953922617174257653708058907875230198014997259246170755042895558240412867880747129070003756315622453941769274286851859871713997900951128504360779907412097752443201594404663113871662059427056864550481845254652764889720594523663982194019681962615559846511237354529537370679275840250755833806770518781148946640917462392616560167248898210963802660592399459375437903680370582358255818363157965145017391423007773557987037297677079834867252146189928001322690215095658640606758900641155091565156494981059730324482284982643891393347505535203060233721103774616480894822547715522928498778459964285447785489401827785674793030460911330715561384492034781772643137032589227370319029818425054590323401038791103717588882738727494761212980478991863577297973838557969960864124713665699090681802695112385633926946391513488301054349554496329945208310188855616936768565280988248781599102418169426355829069388110264425579847833594481090371290587385238959469366025967621954844178661372888540751778067845744969302252933146625376528057280880302486025710641115426234192461370153326282395745879314394405835335238941803172214856739736008397511890332744610749054965571504664283432535862098420639125472368279446775490789126313736014259774528233234362439931548765047037290945423250202718415746687390450771957702309530788857801430825267361587380253775246221960901399783007536010133461206049270239983529703322439940923380937620644027608910767797438327130094283467651539738839725459557245823446101814588663378410300313874760521632170373581832911597198374811422727334660059634234606523510346751578377856213426942217941048772956675502428503587810224271996992637394903556828737268379336958671049873157595404172023314070817338863376137531441208915646883237064235256533968838943392575371532060652322450310573547067041773098147209930560110749099275799079989159216653455079612830526464428984404465370754835468813588070081530317937596415320932575819328615194438970976635738316106948216692132167399755400106681958126391370940375695774547046775588019372290780786495047821152689192211804685273529278122520095966960591248982301186992034126989268134733087181221646393172977527746048230983451840161407281563098587131491739049781837552165290932852842583800165359242851086039645888840288217682335600699986525928248966676089437615218711411832548803837291012009918367351103066605426607780564704228730409069254618673894263920300445107211193828345468605999196551920948930648923684317814007922139153548834975124781546018422105379024670411189066368095515721016215153310588675495774613934603427054841407957401982486075899706082785870970935466049492831421946409038527403063746126942855543013620257719886069218650154176982709682523805627441285049520947328773201114342892515270361469294621047373642002431361978612322563315480410752107925903026851908036105321877286967172464034185874473701835416431687340425571155817055080692741819345221840819735331040527905711601654924061783642763282268658219393645800868957016586578236367634257079632063437233232397469252640981749902927609489562771485055189691587677974258662905100091535438225369440362929948897599459124137880967256320175701486751522225017329222149152881189891589834327292693537208456733876248149745643780130392856475917330487858501576354213445812598252760415345743750309430095102928050702713409693608613339755716189215782806395547530275368113350220683108191455905870957474037875704242729973612814372537061024709684219895074095393951059711181755671584545933610350660581707066416140120984720809597342963222326932279474034649369385511068049169506070307872948133494256594175923990705730457174242853048881971855653558791363319066918111929644385129698773606584085400243077241777448879946435277340792669461977570617235980195118240215427984031161936641510337410849194275670302217947589429840522290148508894720439497972401881304372038277177071191122408739323179459910058680178361285741583651542123660518529558457461714964478632235418033221071112316719999401303156224071555066232040822142527034303616294549593220459527908983561480595369108674003953184053317969815713886313504188541199116984099475214129347048820068482281476896447104097088860744600888383639289991882220791849319479102218264214487943651834782325276515114671243661445821027857584412639824627413319672606046406845306574263803572800269411172139676336568127432467206826492965235396058426861375248396973457843676669991492296574996033761380506285983939959984865931054802585147063756841207536175692221333395284572779976103346502311674083080459519847729172523014277924016720117272333875007898972260161809201145370631268268423133775656556753418586955609652556414139126449341720114982033025628366282992029406203635000616273347335333781069060491654947008518801729408613201547237965623038140112863382204873302442932806431059764367018914230659849084075053232114561073920012911388625517974452441141808027525685594459321282317202827644080336987676969323634169052075838659805884574030484673661918712230708975432885892918508523177789268738511860401218109361687857514903546076668220380163792225871155562905834806334595495205951183621812932214686571181330873152031971581812541420431393478255963481818830668792055406821711559973470756020736982368214485554150981486101234836039705397797787081544605292662115510660335935592307303382954437620867725946797940122644351730085470644592245177091312530854090753114731711852119631380950754889227433246881227167847633352501874345936904224691638996267367945003407487462206198006890873404968394770200229172389003996926582805558513928217848565092840942008505965810074455124536723730497673878460019378448228709428603298135553320066386137479941481763797820546365980163831491273115021550623552308391988511142359525009090257327248137880127888511471095174378132255776023915414370538270550300397417063798798430566685306149944524742211435558057144440829977892736292619215596577293186576532224467047099671341429452035980263119516255220828579986807591480688646576224857725849655834353059114939015170125883547420031983750426239513893042969733455761153140212625568777160759398444732838829993990607271699991166294459537397260437338599607246481357477683026088966116960337242293741769848734104316889620387958470155429262846372351307228796933865977276409902293785837540902257475910819073102456202195288685269320466553533501965023316193978456884416265206221022182236642038912548389738004244516751578158013367428343754234621318387230720670692165370492531397351007858485401777470156826240727639515715494963479618466718591422361084940706447295279725017964138208462664935237853534188766755233577264991302830208969424644525821229590886925382405424643423101470331224886307761958207065538182657950350610788859433896942516761831008924377337069356733340171448338676557479867011282143887589394381733174013726277387017256889734162243204236888583555584626704008819178750098509136402966783330842114114210757981963770141753165220205733991474675493535993541303694328320795556408905353346237106382273247497484886871425783792335934832325238360377036955828169522654257628416960925161656205566748257590002443623122554515734497494356710638539531929007016662396240693972247573563796927173615791651663523637962041500053646406474960675753612594029236215409010578396978159116503271230534738620270203127319070667135646738948126642602318983951477854570278558392283169967216817425484568505148009461239044325895942583726283736604038034925939270184680635177340446681162125993842304057221298839318097018966715530683175551531539253095938407156608792247758808068530681339979443151754683290264328328123326043088118901138756474815863532045510226853227830417952130701683520495275825142644034154871880121230678789082985406753089605442321831076598446540846845460367492978643669334288136567064670222531886034812305628795421366326432943073598520447501992027487649967489425934678679044916406661410822925488808447701444457198419455809850436037755229633870351567226374582883490981884920587088680776247095502625695034624309020525626006602701266104581788363413702195234434133941050526969622276247164476562058287360933211336571772388959253375405519052415650130720257948049357463203761114426132934075462813882345198739820731073456740683985107063795429829339496378841010844572200106361065140997051124812747341065485883320378068803502240109186279333271801252997216029642583327848368882208672434188191568675715026759650256500551762283436425335334753117543864908320865299975440934486542950920531692218668362273990136301959141644197040374874061900745777494491421670117752646911612730176048286541951177902274487275779862345279259658502993210037946258679314672548028991545600599455466258878417717168676382439203884421193589715997873860606457735339260292106590768645321846820769401576449965226031433792590902611519021525754687385051322770474404860306596089325694274707823824848713781440897048095596355525372261292130638676365021195710654268244712153175867533973730064254816219530402112438649041345746400124316794285346652146236142882294926730728018533319186674408449709456136399963958818529432810886439009996382613975199192061825659515096956467339011607927846615746197027811939808536353743085919497641098963115763694942758632694118249761492807470423324616481535797665963897073458977282579666787587029776562818127825219188919424509030918895286694888836972599839092774943880693274628493015100147406462518226685970321590639259210791778815445903359272580994961209665392536361201698449566677879612425234765502142280192598775156965834360217136469119080785172903037929082273738692301866629465413858703100127943654728011933797245897282851416088100792821728584422573151731058197001147215209919590206024976335634878464511753542572375022082542194956295737213714129462973599656044837443752790143720326434104763350962620995831798316637676674505424351032994068974438509768058066802991092698393194363316646280691811702901096540536489458574201501380128106664594577741510043860207148311495616543915220963450982780803070024878470680123509224530635753212633273461192915887789019555141961180862911480777280627166345627833872761330622537242920842993168067289726865143998310666980084798879168900361392619633133691408046706034616268399899165812970662304421365064836697655417429139471925564105335655342784436916259870994830617895135688142844692407128801951687857091474401747876628739679457247955082981769055450212292690471105983218237496446366314815169346169725559108240363735121999205769838371911284867907488861958323773741787281880726708245298682071570014237021843677071755007243072557801591911733766636638539636654221430400393995689785260367614221927610370372448403023213871683982317541512093276015707192151612772453152143572010429834157360147287822989455072349810612259921825002108323533092598135631982330551155772047539558608811534742724788171884513868785562232636990573785447143545286552826142829897589834400229053836173998714682584061538161440909658750329413803006174994984168243731922999689508556549989025284225540698720252953797201550579776884606720080028614688810879652066630113506671398775014349678496435462618399498972863442432291139258775253908566657139823675955660804169376780906042080508848474642538396419536931271721622795848860055178323497490693819303462495600105027292106416810593115399809315372929630657479943938409707377434803753481240723825128604415518073822990557117610679078447499813181182265488919317203824264044848301757014083126993480149795914485036132599730444224518545048643002943715042277940303060087242010751703721845102175457298391210720949842230279576193297638415503655692920539819306327420410500462590576816621683434018890232654331079912618621034752923881190796593703895623542538648618405093177490323462242586747015559004654833333323029768691189740556690772126356762317849126468621613441745593428333173613140771549814941434715663631570831714717777985244452446540876764666886744116591752503121940690052501859045259874914516686416578369856520624548661275125172645171098489715406668014634707307736384858803096977131835245155521633906811082458079224997310339106796529154033923851345367652921542994065463134109695696037073709692234065552264407422004045613235094185435084103640254774910982835151261646734627041803829533497150521372593854611683209105849024685109444227215847683820970946933638773847850330170908729073839936816986135436130156961339014230382838436210857426497366510911714175509201405042705767815445078104053036012407656428802602224303889631746717217719832754749280471896592770781784265992197215774041137651515201786074245361862423868215803644445805891434934252763210416394974027914756037455307037140028367051433942077319382578434084286641799882003841194728465034885250501377744413930521607886870084099147615269085677451724589855388068534659132612256778695649788174627906561169783120140163479068112066785338321810246475357516450226029689077629428303787142261926694932084179982172830421252782685196281569250240153881435432136426180766015580088282292586312389603817599217044998046574280244069119899820977997687666356909675069934309216391446456327447436243999854494653375917540770716469704455516389016633242304946796375125030653684455908190087711358902249670005247069058333160319866357042754038610372550728105988918867009640951672706952202757182325920345337852612426121502577421720274366046251868944604063186580929311103322101099079358711875931074322046389349886726199057081770060709475893824031629687220682771384164048814090138008361063713674991913925057325822927757740343140125262185814916033155755673653471759189401461173336367624477940911008591099653983466843001753619674014145721000878409342398423139077124024922780837312240879766366313322366619115279093538365849187852909431337513003027243284261810192766103491227961422142708825398806032389120577507414740123592802692819504089687003867410330512639879326718901501858908830381453021644987046313372687240171686772542429789500274759362656480810094422722725443196535863885576779461991519974669843125991494118849114470079821658028332586741505531750044636123293648510239395905222857563895796465173792101595144643123501173595883405982031655019157671934858654095698717501781546678391792621689779881675359198490040577398141500433488594710877612954200136607536504602710474306972654917161422898543238831961746257299037327105981768088138262903960410297405688437264176332774957171015422954411892533089624535261874398645801850753848114972998837146548061069495139458865482273110666340580722466287821052259013601613490637588348966108584747835880877217389862340970922859615263495089011968901214778056304821948916847210557592243734142026275680423804678811973711181247018855239435437819964268326740909105836872424130972816410296864973128857728387144688822660035087697794945194525919311796866629117890894053912288529359713596579247093338379812513153331581208254934090016563062904191862963875276818965070610355058604969207308941048831736862638143806388580118584073875305692905720046205111323758575978343671569530309302401919444995709467587309002567532740063585359187757451749902405683918061030567542570594393198166745686131045818752269696555107555214500028574864935704836356158100182194062954089165275815655230086438988589507677855199189278424044523754842258927631524048794516799609722047302972384715725289180049400771413588365601211833938969454127337961959891425931667737477350091719668760183074381305639064869328372488910130577879072380934425618615874100682052992935980920835584922817056732736658016190229743553096574628633666880896355733518669727656358776688428418636496144956557545934270929813164996194143787067541095247811589671249843786089090226734566381839603193357026255248818016028735380373766009196479537856621202609883574745814626096061548084252017414942419404686148792140754925584638770799939290632059970634784577956848246290840621948647638178814893140114811519936733915481020658878057539737967845247961874425746301949582844219370402722120123690330579442347813487347691549607060911716588744864206301778235818375458735802403454956488341471796938157980088279181521205906351191774415895173770206940961383094970892761874192779057411504753423797976874652477386914982019695817088066189851915109162457159348106773635986772915635530340596001999584246080808508385728299914508830055718240222929636567504131578892772101997696747343859023045016574045767672150135670621846794154058197289233910170033969247093191126451526233979149388461832107880706137570784534075773529453841883013458234609298553071877070229799294910190594115942219855974487742429503571107462673444739798546895183639554466818119647172960487322717125983467347521635320388541707015045198975802234517993102829249137979747908157664105415107552288332209624087035841917353771322963360868339525332207214629347394889885539884694007787406710959871803304705507092877472241120177855399334072662438758973980199894796598661139444740093831020038835441637960943218968244862768509640478071485745076685455590830168787899804234365705172665077225687555168972554980595052144902597080764107306008831455219644306396741597217412994551827007980456723938374840542709765424383270189064895225174795884404613633932127041421324976508648238247909361945188642237714434429825789928011639899212606729894412664546569408481581916928750377437847893055723778314033777505091547992428193394215011926180327559335945400634247717571117766078735694540151006361174618875069451034742026324942094822031221780233714054429506870775908884567740963263669750147994102371952789726819045403514528143105943660167841828112490402853045434784660555147346256169182156366085832803852778273250261959983950215558379050050185033512906333731018430738606178888955076244118428852456151959123140731812122408722329586622768945039665584854859783361865653907897892015915609287739760232916583855476667228674496445830039109598242879827978130164479687324837029492711747085549329982500739865989014013133553283463898373576141855912005554852749447350785078664205055876252513389372050687601904327511206634526672431613512711129898936818509570963713897130060692753896189987778264689469720336593042304135200650859089273691260074414381336038443721800379327790876433208285577848083017463955055116058140839710662840347606868992423212101164563872019546779644623777631352645166886731673634309323460742717128569508430150952462925120548303720967820157022424356636254468586416371899792690258961230982111327354213972182213665682648524635624173260113860488321309133824349267428818552447729528363792476083248722693573968316736354554730547905940962355270060312052852237341260027810866832224222504717573518068283068287710550505754478445359375323150227267967838786716440341018290736362483784429563743668755206409052912012309146082154949046993181734558876676220872435546496394198676766739822010408992081225297355761733039817620123056887957350113199543729151985956322538612728984637238994567838901396660775268415900333231107705919146507217480692078489422768659048447060617602805722635914982144198691889983464698763984143637754571550448770205195859814085118183688175140434217410529428287948070749346922583772112142906990057546466265823248222158022686541676764567411836909272849442105695313905461605435636568507597473908190637634280128765734385742529657993802165400552952409189183867936251925869496111127239882117734973706165100025045423476069825739465717431024875485035264511282674718135315213453177472148118039981580945981537736627656926453162519598939193055415086254403007219058712519879155965624250761997566557996247177430869106058731829080131445526122465018561773794365464228548570857536950031660517074964863112526769051415982883934565293851243072776032937455764581001403516954477497823796803655456842927829930473874294560109109363565813062027586486698453465156376236853828646237959273332192743449489835727806011817408519094276123777663408566433204484286674294071059592498385065607103667564597292146292458136997780579265903598987851159129025018376655073471771759683262472970399827134719925342337615115694138478147516453096996713235622002438690510830928278899404985893521805913788999208874446475909563387915232129708661455795963351083454374846658923911376783625487611007717699238001934379191256194403477129710529773820621448403538619633372467817480191687226305854245697160543670255761754600686442783714940758688733322121759268667050960529783176563810350615819183791432071643971468387025947028043950561212105904729358301138944092341905482020403577986312623777275545352341237605121502388076698675079638129068500974461084177599153242746786220746021190389111783331950059195839347445393819100685402909784566312748887149495899359755584343959872291119857466256992405409089976017770795529778803541118744420372300949908929168934027976812884258711743226416149967047150285119374110433425743434586528364544241426497478091257885792547937305171720270538490653690272985423175958211481343997175090974735445708334186271353830704715869501498346995977329492156215086540304577921649280288617106743103836652869687275645295312075220211949929827973221213917366978791983013004624753863114221686091553065693996118189499349238432560734764740992256767811260808221678689658418383003381341399820766683985647512288622026056163277378950985906408586363717947746861409783512030924173290152215754258148178436081568871114699336639127188985447889714018972148721732474581949633339477048437179557634134271713791155755527593496550598870020063044399690278653075385726708122302625241338257517367671715468110094688319162564316507284816785880017753738935992775510006764897757487767978567699719536760211366369862582698097334662925913616118340090429064654496046293304921751671830560129951480270953356595068874599023021313825374020339453948313588460634703566175448007402697095716429523712794561243836720564513154182833039893814214208349198679451150984217679183416514884153243041367634341606282343647529198800310325027643509531202965909239596649759598293785815575948964839867262411129163612369865655262727442963756093584087668947308438894580381281049229241360171003515841240211016315218294289353002572348374245067998517243294008256459950761147117677581278381162801863456130438645861729372242970891051150259418174257425281221602919889486791024895275369915397686141421076560146024750272615145181967865498999576305012668551117418365398843581833250471902330132804505395693207123242076558788762066376201253385639426836068592046367110390248017693410892967604217623888611460617240504879667715326236830395274075067139480358630234965488771940872762848490199487694988219167669736834958050383723743904687917175860365883191931296616232030282005103538489910170250177706965639650023656823146282979418327673672352329113571441761474028965418528963421613738340786710385990102017483264757318123382602560174146496353568971512817633244309425392940993421485277704249219641657621048627571774127297040755805441561275066313424784802052661080133662116174875341514172851738447552841962793107103316772319347709948594263366991093387595524893540207952603090928159790365868631518539459696484651252687472658454499255909676050455411992685560738424298370916615231877390561654161990459212012219343451027539706865236459592753114159483532134045518454621426263807832586355996756695943063430813941796039324967828314274606493032657166824959185855405040339729842411283472309881921630594061909989770275326629911537943351031596707846753358780012423787337452861260703021942607171201444347616138216219510709997891969560848520619731813017718517947064297180217291578052683284148773980811211583846488721182652807290623695432848501755552122250325192004395461782960747917414714806400752501241333541811146091609366249154396811172122210163795855839096780074205872229964509298747164386926116843307148148308764219943531342369327873491046879968009170944219270829778976625526151403641168030481461848372199809483356753846090464456909687709791437707047825335821259842528978757037275965017176887007529238620253823641054720032064750069943965837470662637995365851684665015835541590696472369818441437203380004424682639319620145756169878759189734200552478343250651690491756658578424708021465162228517943813788087261438442217646856596034634087657689213687748223713080732330139882243616295798596183850981115042228046075977139986943890601756613874505863601621432739057786299710140454533612824457763343541103961328678899230263378554586237182647048596922613102650007701864818603513335083469265988877532073598380100152997948564329657061098184257909579064403865631433828709835939348290494701232338153655947254409177081301204048678529897979305463645353581869751863255553251308940956626273148200151987816753211189005969226004320755143957745180761656851520499860666748027855580780620256675181127358973743906429490146950046569173316294637885019278697247456847907046695031547707571379102969362504088263386732958920778227883787945322384303671200639354138039689785371109294126887316310716807799102867281852439022799261554396981442703570623422760918085453901589177408609500951147934840260758342656799335137388634317947348968197201131582029317286936207717475015396635227668488043482454750323323820360062741212928475679081970820490065556829800178464601844414910478607084319586368724306384375499243225994369843015082780682836409847127010803652746167962943575120504265371417326688384423084407729308280105020804460115168650063181039731779213792448167511414062153288786227972059235893430410827772767679797530935896263267298687431511864030478896789102562596952344260566486030851529378816315867999031033371888485178236971694789044592003039207004561603106112529239078903180441633988828901537267546433116463755335144403870623345389322958751776684996998903301015688167410893320654282111817086238873372042805621200111100825027311914068675402022712465156872209986998924922225265518648642004328466596615919633437495518410404496521755031401785446496088600325921348029053475109363919305542682780156940302656949546047028799560918424993916074128692636900130400225299844295480064812971289940982832096010461368710837771014844339342432742280093536159099662439319445718815047394170959944130255474594995724811874174016829055755834019150888121543853486635158538633109521558279691339460470889841122586358123803795387646533180919734602315932714353450265248690982403860406844318876470757320170201549726130696697831906964460192722579032933013292421835737363181364719988184056308562044073295690557771264943211647157446193822884704048332622350149665023657203926873300549252070178072677538121699539756935827304513226089188568875107596427248387655259301677348658149051102078398977494528500711113274536863251894551742439792116709794354902077537869809443831434925991387847385231081135231955475000930053352912147686481428955688143041529112101527609379747312230075489257545309980237072437191760232305211963992261817994202199177852103333124694999879254623317647243505612553546095049014024618795177390023721127048359338181567345536688517225158399839015036617152816097325368649800934343422564417544728561164914592772617545811295320942505006177755242513467206109749251646476896361174435552007837656305725670997637223364810191219776729783550306335396503790465616328868842394026847175781423946935917466535018679016116496513926573333929850687197772915211732968075174357010473855730567683442910621996627117510784674570731952423194224897977592472467633356795504112451607727436907697421773544977034040407209260975087461443745368988572489859600946817849819487038726329847878231897764315133671890486291620915052403390653321253252425216307491339160993657713395822811115230166771258220608929827187460352133438064547721866984350106195866278917142784772551471056480338940065852210489144109797730574866513513843906116619850698972863265867086428348695578671306167621124994023774499186823758205207200576952358802331271160500813508897805918221547047130326839609159307711673839395890439218817747015488971505998908975108695293961127511530300385367906112407718689204255279851433724170869708728477829955055248786149206343144147488937821201619042501428821530960844329920333505749959856174276639844662802641925928078289378407772311336823773290982296803958129624309908117723105963061851840252800690393512899271260445235184261108955961264248163386822501129842362576448338763019019405975297964940412827717071217072133698268712075671198093468868327938340986633166289392355667965495943032972771386084469486170338209999914910556365525844384540671733505130954039499301405157899463871771835105046117926360398266754145343224620600280286423816732000012518378394231967435397914715551885783675503403273530387311664354972784810556762072153653477285042800939797791014935127008567684865990729564300954322714829602336770010164718183067582926126959275145870368913390480247449877372691168501966309612755911197966583997959484188211478983200772477235144798333290956114154223327373165926378320500312021888077596107521023339379752830470002385032571322782162126567422135530481087533074779425938071920511564238003653948702764109373764367481284096141477072997039106418510090419303805756603006051479520180015532034436235374969351572725496097449308993723222178262207429596769319991898928476393328196623907630108851574464452723617926661347775848873653300229070088809037867700950411663297456986802508377682437792582596895898702928108934806575856447192611430018554410389662007578842292412856025802056493714081505224920684198086320177830963920077765861434747799256999216943304148066589512125793733127932922160090181133463928644440396476418744494868159553928036356812578293141031881511687489409149468678500738497658565788134679360244580895268579459507824849533808113998418109759560486513847298324621201954981526032745384135752441924771187997596237929094029335174758338751688272176021229534117797733947340646237567081288120729391614876706921865625665591666092266746117518121981869780079809472829039971231892548905937164015214252109239782004594653223665673705894400629570631516582779425383835942644850797756126952516535785053384332355353425437952483708480464389432381753546404118955239158973387593825581317294828689437704017288673394177373468790753293225730509568168042831475424921690915500627473078733546974521925147477274032829046940109861277020125951412261736030414904190695304432470401859086964669267730481247231825622449219634474707677646282166019013676034944590902782819293827580779631057038318463867925074666669722007288324333676275703965585475949884513741127407423415712402729220331889730780994606624374592649097564192881782082794757646127218201744070407056761293298953526178990878941136698869400742231579880697145357081818535301652952644397455543791622453740360484584666970339779967621256422776590678381538183424522430972722163033810901498034987552226864851070715010234610783768588076965688369573936313252982957225632330947227161227036087707525556341702711833870318325721326439189982009043709380997921811823391000490101699884587656463597700448525874724066981847672406683459954277147851790624980674715130929066545497400895387523702265881020829112867363949120152775468018603435564716308119427180719107820305699215099840186356893391021303938390375373641362052218950742176454272797159666314077895312993600341118303808121244236583907308790233266076431048731137180911885074826242308596270449967386868831397251096788508511685950164967954451303523864458357339424921599880593862564606304230025498026844552357595272376394577479005941365371184903468031907013939433889469478276342332605249431412260150744090623257068439059313393571520168981494384396886626676172818762710803821062988190697723542292491343551227468935515120375751868546492040268590620562795939325347663994087139209788491087565961838176456242596031866830954102841771292347508290427392941652540937624501543682956183312572791689817984382277420716606269078165317530905198293691750620316127615862878127363704947548522160732642241746952604136791294865217162593090850321544449489832585615709685216068251238772742290421223017845833590040798865549475527359909745294558448818414567753186314036892676552351950810203933728451377034973847239646813741328811883030769335499519889033593839494164696873415010709402171420878306970724151284737991441211231511568296338911983006403271736141937412259728800482222700791735495146853560969728988430127246042313382621145830402663915987561964233524918485905470564209207601677064658907001482153345851673561529584542651677106007539488153535665523864639882511003614440837183525962941864970057909276970086776740941996960817693803455935832588832970340534331653455529378278999939880331561117689441106239929282805405530333674691621938481669680624221535367174188012610611470508974409841855369188341794533777484040493679542583319885995891154676562156202140877425810921870644898623952430002485555414832198047736775667810272789939815155083653033967785046555151287364426848197958387925386821364632930386478548100579350712792817514447565863147032163389589958332098647260892351729080770810606709218878676368481033854326008254983567409355163127957069204226178605018922564746056538419829235222786846707464824756084114884052913369451674899531955078582130370462134551031161522535106736372028102952926690294015012524798949466266775823943036874563843263808890226563547371647562601157738607205209424020056523408874282242984461165605396533517793104009581576440264705283745196616179920902713751040515641171704711966205953517774835759022231234524854541494701451961837642690194459289884614955210990475410161985574257190844651006410058861294698084932769063187047722211915579252030026166866804033874598400676089566742857013234593035383988313355004904475932717630745271759223898538849395607431196991166562355569452372378110306336188830821799782876951640018631487922680947582917307662677243833924931834951662589319451206681751742140854995582014869382240823997275168835404448015576028394973551532101732773239705946843492807617808070088539222670786058394747584875532383558102198922505830757208045632725684618060876466525120341821543596088862053921972845187716149134984174485140708111034354753886021878685644866229748929702887421115567601141730432356249432814364504305180270902374373076735341646924462802798244878129696442516898437894118882558478037549532874415485279515486618706565102292133788634085947386677333145238387729726087854986713942087668109778272496044790578480318065910596428217545250375190988865602124736468651614702400019061774135657786805665257539508894377632164934620902490058880623650092069871648400973376402429680242348693724378155408429371812302094687398659302125131911235552091077032382835954094031380588327321174436864297352973099056226758224835167359951032862975550907434249589663344850009199188027930253059794448541577712628834790145958595415135856730848888238452926333605776610752924715830624503526473539255062209850147884842388965326546582402972108239051227651052426134745998679357479847937237291121325831938337033805142089819942629623743460827238055832114443177140695842712542563014728490153320503153500382205675812409911015658919366308237052861701350971614881982729088808428217153471680352530545577368358556104545651579280375355452440863135768659485293792334295106058779862641809712116719058092047592189203496306852225258731590508659589840452051386498227898112814093676818961756250193073281325508547912165570283278600082978944273714060669139464498178065475762159391713450219568238438832423498280227742904624268406239581707482783962277876116001020702189813448042916884349623889788620462144822336520199993419103682206854315778563021662843209796910710544417368397117385350128827322330035096545708405679827533314741513728023633442547957389097887667916486368083360034379885790252042000956073485159822072024478992322466180125579897060720164681556283466672848288920867612303406327002245119708319798211750783972274707559446325358538254344637114060891104254590627764977306728735176632730439448257537595397053406577101909142931206899482510248267641240581567201144845305029324307442690440206004103756886979348842984518516951938081409197820817363205854651379431876655144352453893287225549839338593297463777515476284870958505805836983637994205740300595617780618041269782776836164471287514297576958653791689637548286017700505173594400196135686045698708448519847616452031387083764063343868293343396814015376743626622666926181689538280042172909682591255694953233228350489362586922828844661658511757564219553696346334667174016367870443563367275274941205831533435506220759198899602377091041665745229015416096534757031151305366340075264621215809741854278975486784135025889929453413606812710154430378728690047960789622695207725257842513175607599746231775668095963852901484168183772529320194188593772951152497878614356780455486739690848891061242457154227548666107794209907728776891329998348560398674097723101242203012165982355247943825928303302623195094234585252753258811149785163853830827518980241877851804612004099120586447920585332735459348964284204317121217068563483237484945361975109221734015713196303957676117505451975727108616283742890301828531772224324359003050777824659939922453903826582315324407872726532478245115385444425458705606009705913664929756309163318123472342963259328324739098712670319436135013226605982995606218407647723465804707987991460875246624212940893472995539463934054192012092978724256780251654088474319430274887575544497566629911448433794742451383921514158115764092444938159393430063434152146847460576184450352170297029865760639964336767376025828528354295180730210138260199904009857733036030451206318307542851837285965924064857750339791474404520226853851726229201390897689488043469128193951096519402051687187415647793621946489123825693259666360659582849968345024193072716628881081662696369976762519771294710334827943310905717923868291347141702676265385909147520037708727056295529160032405116108058084892276547451244263975525660827512610391079518506046377220056999358588178182064595598648760502266239627216174872576427478658955859827565229267934516130439814524829113576425000382755641754381296906560274397686670580970523545175408830982791315858027360500657095542927887274956419724717563382859594566749604699892120079269456740406641443763993674902086068036871346435714733179149345524593040926424783041467253973435955646045043783378126567841319896335558781374735800247218063803049884472084565678796705412529902366340749690171149147661852938396527330059521974817852545045590198837244488831102260262960681126145811405204740940630196763626085697216271795859475707826643399332065163062027861436522114727911275023792112021581006959079774474866248945601399384627352047301210956635660904499529893904861303450586993076344574921200423941047440793590059716446188968905233814679424242061115007267364303473513242743123306913686814038078692961595925484915569145902513123093057153648346008412270535660483517433648887009833838228678243590927262148500036364633460759598407411046525453086713684410072787348972866576416474538371771896499093646182145641844817587081973264876630301106533913734276800459721274963223874343990627222371526923000151744590845932369632733626498340754549071575482767442084210541598215813266994113229293602205436971389567960688214898769681671222219587372643526802744540121351726226523426253943535689018752069049397990069607067813924662162608898771175182078370129258637613019203150009925318740969548723771749287812557601281658641772257764508185465817270025485819603415826736407247941438497030120218012225171830705938848480502890938808107163213313379617983628774158146961969034542056834855542427821539356594948846931541631555577853626620382254887137007249473489437740351895069863334047267229688121967085376602003271364957561407672292658782475809748295936298026976593769450238642633542223876989831875055047780382722656049832295308850645765323516402750342539601703851110422949092744716707333009638699102818444060393245777713808838172679443155171812270066553837848823243582661669805086161698967683692754627558538054368503747344834087862913771994807707166512096226588938458052338944880299602889737947579868572931159086503102049508134552385582802805269258783567479347698264361943375057814384908031796311855073592023070671246658801646728243670014345402294375364711631532432560719731434752098266933141728842337934353011398422241027145706695081058706542496703334116277393993557580262331392884299530635494950602530025989623607576914489039280720432484659161758654575151262581470242059176805047963278095256356167374193694888820702086527961762636678541660686659323113644502550056116069824373220307697276385732115187311303729248696010298454446821597975950451034179686004781656470205906111888278660183851506289580184418246062320449693889418757910447292190024427444561319021690304773912687314801464439656256014522628323023417998891969951059257892037759587821710660686542145047320255858963831085074324361609132230486464600969779073751013942617614669167558646156668452724627547798334508271191204328849766440968717808536178879406065523138227047053720077709666635348813141122785628668985280330593813506820837011689682871319393254595902878643309075405590968963129050736410340301386931016509249704829562360037368742692368988970896360535151444740799171084751009978896343389024167948094073569587221757936472602937488856711697394256444675665881536202204419806944862402044774352315177895010273282046101379248422669894898033004707206905308493767921756372987872251378032823536528665911100490332498642057356025802927667195367388674817993624136315086905189595781867299439150343263250072601325148474275888335971676647006776245587524386951528520803263719927642050635878391221039870889313192770467539180909372972505411437523745263102155278941999700825460591064158275448585841176576269959081863534136199065282428282302906671210619163033543257786160235748219018280022012415888495195507236867086033615231569552657619752686259572628873020384868733051728429317149070365451006424417140413625017068422422790590916475626282662954200306927971718592060106388636413796237312589556463960946840486333319010496695465194176082766174835479430631377476829661212906373331071034220618864369330196266530764299508893309539655729644745350638127887720618824307275567569251209275178437751556429575904277417217981098224113648551834590046696704776176927485719738799152792369800417237530728677919465758006560434359068616806379174544511642080936881181057639620582558056033615367221299288270920335710270219502095825640862367982590731479840715584851395755908054439716155715733383192448808487252463559957414166388510550738164236501132424586814959865217536350710304910898328161145506428562132257332994411792751868943129364434947554755773975087198475598100167821992510019516224277228540767510421914686273334499307753623826666897034164064369118275586018544402236041448942952798109346902990838923170744970218748304525696646069856158884094208356171112207156712373015089459700785418255603452664791655110499946405750268826619892325090214087900802570541914947077475753652568939975374454175887959600410210703660910015782154343764298229869653423784598716001732535192755517478616336548989150178406831690416295010768270051932967007277055728039308422045844882014004805974838617541731029221393143664426127949760005676214573194112159764967767752779424686952504402498816959863315832923443218573572680972674789702071362167513405308596034587293229159441864342852652448674516429521321758646824377088968903740489756587970322439024151300016333783241603778907330855693076368509907022975729007624550976664411782005461921205682763869509541997071230089967756111657238179288352270769263517459412878581029320091877188927904446659184404049310657396282237715414834950468095955575057726811872251862804363122978667864076815722571667621883565669727684231977830105246944948595198118860840417142236638123744092160004668005329438907573785282531938894110269303997638148282302996156883608639060803020187999780078234897462247334176576355067532078101962156861896838633718168563425225061457890920837347207756576190629690876270612476542715806139258209029702268757982508218773073129850449134210565625848994443365248531509062275248488787721034721790181180901744902712661198737290014462118980393180806701538961277078011972422411516162072028325839802634676934086107478233416804925832362130544225655598192647627696635557156166245503723191224535232454782003269705235485896379847284447602802204099128946938996020571981502985329222347896134114232997800039926864448122716980230401464239248867220979207743744951090849281823014403529345278656787264059801520221655308552356182645506245292282775116897900828184460184800104059767432985783051475335245223433297953768602553596785143981913243017886484139328281520054721163150516433393825399059541090248757821217766950974401597244971341673200121220120554864277417662630516408773693078785699851542339791911996299273199520370571803586254326986824635648973717078251844285520459065500942798395324616375996404524471880124075859063087184339864146711709504738281356648126192670626717262410363499316104618937865936381507886467167669765780198965962359519464902942032158060887497612270816149477697278088165215579361826060700925024351774302184687411137894450718648405026797724913470026370222147132743558658994005935669221332861405755112038649392227912064819362522761427800045000719650931686498389516097464754672160364465604988286030835987701140350485772172094349765344418691734776889228849248006885668095423863532640837862298453188302920886669083187785154178645113693161896640220315581035816453984929940263505273576804793373838484568237333923408407671380227784991101590770552992559224211057080215445822860920445235735587860571726098597724457706906491668136921211859507935191056000875860238681552285681433135088143969547573526217759995637166320903264278515240550047388582149259308932753210385640117606983640529853791977399520425178078515758054737918180493351671539784699199056093023323419461821920621259881746618267343449514231166815325291070196901903878326582400123793438624102998524927774634275714194800528855964393725233296716163383908059879656811945470128054039742345490861993338654172863373916112111210284292990160051539347479356488686394783800343310884644600990211885050663817606290994285466350047621086684222419874481986841847357319699977495635391334608403214068209950801948502795611667805402576562780456273519418003143957143368836782199906372766077438466518805505246882426396623761764872538694195112545697503833360303265388928959633007097934686424967006161867656491737698858637265803213709559899879684314174603717581585572990576242361321814681885726163206445548696135401712470614181116936107754723999870382270688524845087871773072310652408975771744140041247483247121773682846193948105918397638241829638433410714850937501870456391966006353359680314534578691313242492445338638830473351543904599361526787983048679715000551370855840689843178856009477851421953526440494492720427691475315042511913049241904895556882593423365177143020422512866098751062386529295191953381336336258865866004233730388165424188405483101163580880805687454053745452338950856699038403394372742338408513467464635350797677350202093571790794619946599645890045665103593732444362434742462037051317470208409902537482866272609811985748579297944928296581483430935701325561110185488275342092129341164118019836047256734294022441885088674081300042099703720339026991810356847787625680643452302022423085643297735489357694840499190864548940788567167412452531028109289310050318722326016359540669105357585151201196692250231846939369894599212212897720459559087226559589888535124893896733572535198093406900094546787051846098589013619883573560520477978183158840608416289058443165470157073962156498629286217565729542340769111011027747464229932685183075663310504429836864139322473861905921402372976190887559835754576210519299882362458797981611022719104867345567236579088180976545365745714675184953542828343956961126427456786545248564833469205942991138254865182351280102127233896601086929241693126939374373941078692962352160747203742219532932425911299800181116682395867379318149287474024920079324151125652596717569362123446975948569625624186377132237852140961250501716563153304621593997431205456123179177766482404890525657482625601054371750815715661212003775588586125767148155970290987531086815622603874913460187392878339045211985387779946977067505032435643048752501043660634293275794190702303388246547882769570475005212381038302230001533159749828758014894318490553641827691523580362358491254808838947452505006962107357583581540130017495735279358182961426264760573798281936737646732121239172629717025804791741499467592418958592632796127789713054360242980813197471954132832195626610275103272312898407628395056177434193238998921946485377306211560742170076106992574979008778503107094283362994082415525011951897955477577540790317961845635451089633959481119488051011292158999728917964814238665946535465630422554220961468098980683754717802341257204279616349926753893803468289616729547007437815976146846944457492290061243883052731708128515743267355594327710945612712005948433350217906898874958369419944957770324053417184048184181138776509432640218524687950889447621695734911837268867080775808051063829513522837326500496114283033077657886818087558005646631939593568987066344706101950717712328311999713943320105488479983252311832256780983032409455164567206304310017338993550541263802312616313806972791038562326798147967495414696973330322866159758731371409294537218194272559252356577130623264915996174571938277439607481033347013989078239539053641434819955114448861467447950534815017883228996295001960175305498782922665548750844632331788655419555110366553657431211904439493579621832607469237994221453048189104151120818280168833099940426547752792238395655534576064039250278108009962049264855819224408550113461894747887814325408514009063641835954641468186219920337491556134391312860219001098201190322961696563351769466501363581312554548252703608358211139800132441385155814556300672196086269709672132957377347612536025512072333889766952656050943758544182398668157406237829310911055241986337969202518124494561916447646294253833856543640220804748336119040747572783577841278441648815814571459173174696189057902887683308197258449149582177199826544551406999028597784823721094290047526801480124218170956798347703531997356134760772699130772115529660193692886960982291913360260811950939207969073861730782622527521950743136949039668969577924478450127110826665418652253175312872681899412745464691862003104423086629599549430713204012432796374783762798852773012202446995354008955010681047624048541798836195974344648846313218871835197795788737993915418614697944439314816846791398395354301205011120731796725971400134155614640041144445705135212860575573863185585806800924801046476584463457672104797210373798119432991010527792996718925238752809269372581362319964277893929556365606023956657269310202206192556980363035127378505780177073334259954480125150245044018745188780195654411461874944498044351350972339859307391056012365816808442013950522118978492779077326481543117801566022926616030606367486245674410235193462554377549029014739130853778571708815161925254298131662291804234335375737607520635074407042841208220405684962271692949727137017460748625553769823890402102547930277897356831844919780101986063245102615334993757595071418616980759374121247848863432665327576004127327226445539560984095371284390816723699997822019656550569779825506593713788231410845351921383332278998453053226737944108813988403605953647773769274948195904170998448053655488062395423928996273771133176914743228349173609193199228540853404787523060217750124339711787686782508135200185118459570294112057213561919374283557050117716772475717035072682825598042083998330805229328633621590965586736247656022921806957820100802393847939672304801757706971659241417982577799544032522338739157212749775478831764657533822485487818703587604361519395049609585679051462539687774356827482298566062327867358482234837420133076127175101281040216859948595980337845067114403139463611911534947652059893018567919605850475256566455513489356076690205916990043173860607645530681850393461409497663924257235331012679547789832465572524847084966753606239416524038602083918007189206861614264637309140700063826604204793887782108021824982564987424839726867173981296531555517690904389478862255143698232962702491506595197333045267848705579718925852379431261419369900549920000162493331158842561483056366497476409521698806248250416745513341040479132224567168337631213673546063214178700242122004263536381981641336323558933343365980058365944642037571963419943358132450664000490725619686792380205245247365126567316112468149721719798601104969572473794963722392784052650947952865177034160036862743613628707499542902910909887648966099642535868724572277322353666529399867087608103017103735214578176200025192805150412040698475872089614665876463753342548456357539617801049274551048800786488038333079185673140639182966962544817334581956940284463089087248506397798518028510937937290656234619143345455955415592139503664578448924692657864811405852195028200195472538246917572848215794549610955774558998737683776992028147508457872129898076363992413223180159496557594899671325884325998310362955319138754809374760183477684799020038370697868147956130058376245366536949782282967979316376214912776807890341269942447393993839932563020073343187714051633376761173064242865948479106567723710755295529960799681826585469581257489262889845621861653430303795110691009643873880666010510526038057845912037351294555015876696005228271534387848279829659402186110905291192563184450562808438965211472597991822169289354985824309487107416169726809412665988805742303264629170881894357262778430457175589020755863297124978148350525653735151137211161386049790819661706535360022966745229446537865522227361929326260502514404715494670151526179670329477809547703962066167499817802909432632097824958766221007893122906389370359153882150335908962831235679842839619813429221552452931460869495330142929871046602796014494576793831541768509802997647774434453019608059074636913155472702503710427660582314851653004949173457433274365020017231206755252693284411096149446892139709872666474613260963677854059043057357632510982567319041337101624319149193605920253679146323209222675208025502268050846829773589110717114358447499218758046749385220890892577344918061413888647844835503952853743295670825356520197703153632911692115388176923749296909881710214952413689077762631445687779315006960335649872109200156702645025114797170671194843654135614158608664534127692723319416395715809516096325741448191327422399273979305990618208634153492014057745606215373808384515513370081063867873154462774891188117263490679751516701812139686506041539560824511506868718449576763940047293120229917636223110213694347779092526706358448968885871551757110080622221773076762844971999907646277945803818900576604891057201237185174979495283882463113022134278986119471724080321723392749984054694841762762481601506105943328147954614723490420747288171170302601237757579956399488043921664464549745146749676823210013265363021754993095497789972518233780313217799411009602287411470412139530553628210126277602347183723177426219191408005736409960281485834317997302915211270936859893737525702872140901872085371434409141208811888732221202774056102176084747448847181296966137620148981178153260325821108023519878149506579158273125631777815462928773953263679926393647305772464167612386159712072312881657308514723028327521101442687614213478634111155455372624964109836029715250329502528157191606136307619455323901112323637694683844789274518622350609967186910198175783766384755464520944443739238284474831862449677093603272619490220387675407947025002660880110642619689485304997172714632252219863403365072373242180250188935682624875876963346632795314750141466973624458496319659754588626681757639750514597115537582150010889954843692966510231497277961687840773710556368889375294172810519043008613840157441142582479033220513511931163127155959005919380740112237053091374954521369717332505912482971379565728537171581105605152952584397170031312006477769901584877746125622477827615877693528298887248144977084153656976423706769594478366163366307095013220052179329046738676993862487554030942142756353378292949042352918334035831021669445223312070913837063847558110464369870109975274453720789284127480797257503772026688318360498459773090146130845466810551175600780488294259166499872685448037788642115315725934911939679420575489837520550056496089774097449281100485448540367038395155546780184107114852259405505954529066045434830694168426799050002215137612866274940352669650924038443604394892198038134810671728362235598247041606385616294303889084977844847252629524704536685951004630512562109462423341513001993405315584347462042391686746057989045254110780785651660218025303479871436036615821269001282093564972506180757315641691068685395770898835562534908057151566256697404938120554568998694817119924343194681298051948546392282880759161156940856538936261561696233608535629895493413757933389279301152642374177255926402721137522648399415338563768245258416199950496888501026599628869868101157321100418120648617206373916974530683610325721621363458374630299598944118058363436546760372304294846671208242102189927639779126509133431700706940264513636645917726640450382114501132720029168934003351687382775368156322746605838075089535695357766638168035317669843231794704140456142335463045185980865617899231975506620328367633932595180049032705537331917068095260921597715758607526416851373495165240158303061384428377327776093277757927580383785555861497120009726080000059980689754957770346406932909677118231723640287915089459883456995772419953475105187539747203414300216857669462594842637073104865147127620854428360720167914435037193530489743579540043143807179662066775842747217585152649819835253606485291184871223366565968473864264805960863301946856301976753743105442036063612012973102148357942036569134457209548489722722921058518485151587031222735442456890987753861177839281778267961386049542499153387955517576684331665430511922877411634973458979947974488021148893610929157131294674839199107635552166623325831140544044219084375749707114296960826947951993092071711336485055784851365405492403049414771211968722780401180586695713855194874019689508022010199293447559264529243115036786489635701846021243430363795779076192475327464816513302275094220410046144115993587475174876879554928553059987163720310023138946665865833084575442523831856490169830768756695151738740226023318250382338719432656491852972863647478803334992881280599977615411597131933800403650236698128336652019683330311467373093505465436926851168377240291815591992554239908686882867803037140675612161479058724483513437309504907792350950345500099170430597448641192811040176242012526198637295799654583572230091239834255569229058737203904873119490177459850489624151133144857219725932438212415964865307869542999821933990602249279002930057794376968643667818267391947003926570566860326709922427107918203242133138804884029874197716041785032114882882269477917839960115632784401681034879755186303877938428563179182027005114581492769152849621964576087915840031708742998427332305431882329801194671902679871198180908941638593763779119025510341298533702157999797954715262445149099841697012791152231135940356800677732081781916390123044646765802438141314691267049022089189626346969529663822953882895755819228769372112930261974753244901129044297696333802323856925618892242260576355348157352831012320982159806493758662221556851821092080043879709936553531389879065521204501646706555172175800730610013751911662959865355748111893441408530624650450416471771627589331919681882341592622958596621188388942100753852403525517840825972497539659036661274751202353258921165882952453747602840148052903938925476836447493226599310298725221555015399193556611686990001681937471650315924935484969592802115249117754334508490427721889061237427493450242471667680210073844346864387912614925799820065647864575639554820335716368686498010578742208478409919975537856324401359632187789999541673239442873662846582676123615548260233734903598575077513458113156578959747927222933775727393213808598035884529319065141430254612553666764693850688462572749292892111798614247398364204566161531488390205681470394770827174002808109861363618268327758189980659716397454564805826074205928754256347040394964994183128321155433545640072811132145422594064055126205375243108117983270031643039198253088129050490097538416040440528732458394328095489097579937976557187154788331506278428138382834413438304447310619936092912122351137453575402861045442753851738658872067955900799343724190753142489079270123652442451234814522003652914911100418400844724134623495446516848760999250734783159870986563419940475144664519699215384702178534834829926341329918342436652432260280552786870490582452237389170974229996586755581211018447631978461602634091048845590557596004733745537132013625593747456951104932213298842316248283457366741902871543338082156957916964737284095351133033976482050956940566051667761691220102247879113752669854612185978076279657704617817662981018946336498861403053839771618864823568881411810258787194991125603815443311449500476318866736569203082938566697651183228518204196540667788470051601337576209378789696479307274203265178649098131975754976465642999647320132201322176312317955034762620364108359304124712113107295036102196356112271490639277335890033431711005776350835455901335889221841175870123862529291679796397234399105967007600352139486763901506716843750544050230557533343749486524326406772424881806600923141366340989379012666265467407459563294599030977834506984919361953371747120604198835953218353408155052458129158996723567580951422661081458715979476874095642333413980360079378938938300848460733583534899551157700154767079217937217095195319673712350619395035201017640271783528222652358075844282622820605325413738206816225439246994991060329872388254581572679506547297669898868644676934041276636558443826179530484955336941833663767611806780528325686692848607826646732030022957598779670035167443473620773523925870882792948237844955810040489780683688967744537680494698941795509626238942379198409427402865640697246335177037695753362102924000509740092129246404591582556804289618483673240280364250438780190009300114146633609898450110534056771507862161158223301916098148157779205171060189452474729200002307424666398520747800246006393822670465220009504688648178268575249968087461617296644317068409928889111195245496964345295339149713302473485741005233155439669634431497084759303848791011277086484307395948472242639271784137566626405135092388306019222735769558754245668998037999835980256972162658169981339993097361957551511661001172021289149767730179732371688362689453718574740455671661752480670287770560244844620920361724380395425232503095726764431308928477209005779186720471248793386237020126298995509530358297157404632490292341188909220513233229040281528918234196390345961138850052191780069083682060590814927278095481326082013448227169460685163265122437403008006767686465531447735980891214127048350326500932868475178918845916365944944112856643479807316763504258519700429724719077736495728167645717736914973195045976014173018479696548160884476795136813685206396966338897474376290452755833404718793000986671609168193079525336632084008561145556642984501727569209894945183910838480146466838639350177660439514987421273315364596755833011736712593691348250876329668289693972195348654077025172324256994528687250742851227329274399927487961377360745830858590007622599021520414404567439254293823934142672076429665144376121320843275505210912192412606817051879296373943166149765330130290600321888353880546011695660688225502659541239799270781810065893217255616687695112048928717001603850451017973038662040967121739182182081542915218031916168353779778286840640490064351129745280833923611557411301325913341056008383905278638451485984921957489587430068251511176746630811576484013762409847263135178425156038918628635258860682688653293417479861745255017661600313069299804603745535260542573176491244911506649775608648646035991616433674295454972704673354232306579994122433009693427430611414009899017534385108450937972731420718523106071125335782079995549526200509509266463117280810847197256848778862595611487113915824703067851290740033735293721367845614443306521037321182284051828958139941110624991949607628277866290792997687581257367004218901695226633297382712013524007012811740386249844707262935598009454578453804092290504702718721716901503569748898013027678758955610983284271202281857145287542358186907946865390966211130265702518932198448577703412665069699629173300813106000742451737858368245576041802360790810959120320401983432429923717695341832664377219235956702657576998965256963119312753019449566126925160091991300620012161709865469648487053612157791175584154519711823974818103412315879899606119844451101015915562718642518478396160479938911923670496265230091923749889695270108751343770329939775895967458623897079928203763728624572631366466704687162743789920957301172028092404625055915983975351430821921346393787356298132806737292919115010043495103612493176452732144765976244793281703770359257632334656915203686244582692697824294333084704497018997261150129485771522503905166023181342300759664521981902135760433097757719361688372093039456144906072258866249387664697761634110406051376770040183294971963155877960452872621317565861527232462770620998603173611808498986944095506137010758579991811487313700025324031172884515908627157671862872635480928457819171122829341110852904756278781064918862451607364993159245240922563411317522907296784847025693548697730823414186705583180416658619379479338788200082676610616655181667648452362292806294680699529886390948154274121545714185029885414475425697973154642039929603374030873926459389920610150995965447829139810762721626931281479782670387104619225577370402453677111374519601732556314728905857683985579273708062415571076594968920795107809200674646355287191895483552983529862973551606113727032489396602537898220442097213390392994690588563550088174405225466593979319264605416678808162815913366983737273716402824841355510431144393144856616453027083067846395724179690453253464316787085585561287389130697782112232007059403077279402356745477153967456941424864863458421808541889907579144568426414488768474535549353979626999882060747263249598780037950737797749320033327733770005180963582025881093666124168130949695556614871860659982437688103445630786638077809535037446224573393144525799684472343631962088587318948498866831865224220903677271370756138350317810997297518511329663204595977499224410901781165981935160260961179730820796375680274491138586195392383057380222952609888352161074826391175998594606257897864455431511999142810354092129451816568939738078878401379442762452902437633590494914753176292518363086023390816191667636545892389376143135058119748715517349731765201291969608823119365762580177447435398917579639991984690128822245994975479214378731525969486885320501044951811027931768615242398239047733488593965963457549644037135629893676884449665365213163770468331672534545096983053647415065788019792259895535693788382022932713496056234166774293351902501859827741568199022262393568498171687666467567091250812091276296009484149887930906429998057236468691944043413293796629755435105685414888282315322019953519586811421510835719262284437263159145031649782630467881977233407025607652099081224433840180784343770458953936341990932608146746993983541614157928216369069639597212976925058066142222984954063908028652221941590024576954171349424738190190122682851763305492123326532280716292848642062825251519336734679533211136119393418821034370511035624106684780819691994167119183204536761057220634889265195250487428351488139985735054137653578727392977437824669698906708637272490781236233252304242208219890460604073172752098161162473215013031275606337651132058351494986163441950896949250504767863300163371500758750996939876148302745465016777934929228033897389774012719606219862685165492546052187529741917267326139932443964516523737156010047605828500689528388864150771853855113053383574397582344959321415075916628556381321418080766991242129871879425698293157108627647009614064292690490862552453665326261573182292187010514681211471288549045814504794134788952000520784640240328329969319953391901919380841700350066302384415090301721492959731519340660102101339915334107333083944187927568847994043458258057839845536610100672102771337059792056573318129703099261540580802890708105879032334422623846411556910234126268627575315971551150105801653372603107094923123718574765050584898378808296126128213832895509918053670780945662159413969018612988988106513158586551813038856213604322233537203223158091087823892862690146927658806433034448959542517766929777820761285447858946733166619512235477756339308289287861136971081437572677280394685432462292691987060403930641004014523352386152569101266493620353407709204300147660621550508980773390201619450482705084129330562512690974562186211700721709948716680691117598429666623263191976911732221967961710739708374395024864153286150972371676053949827746039543869012773450276342632053851646419492643877795515763400845676528142123275847226516321544709720244969421756373924959099790973169382356588164742943262779735012197968391218435041879716525873680657493864398230451096766193953520049578160637495819425929531083337243063394976724215895594354562489401691645939960700078551170775292428051714812133771732008667262781420098999945328643768103489150216688435779869214143998252915417733575287163821376187862640740998535252952771123516472411362410681968758747025822548842327647144408392466412280092004561080044975106443144361042932431926543027944480104868603056350933942306413030344628244348203426042974355872610910598902306033276011635401082327757094245050690067963811197487895187350543916949540446173460422986277498102353185202420857344485898906810801503609138177333487759512152397232902040157739773409062986639300648979333585343113033783623015692200816965951171702275015358175548928798361092364155161128559147899143091787169740198211290633435510588447632617157316889399040440828693172464385516193923878266294164459180538506208223236304379064256059392775198407518746727041737259911952638222653779330845148178012808373541466956880177281668412717847935031569618340495373563592395846867925051699302027950047403805974392877331702756298528872202461272483404738334884161024535876834288297124563562236163740035351357139760493815009619476918100233320778013545563781220317015259170595671173577257083343862693407704198021147357866435404268027537191898735063852594616054887003427260190726535121365300666056095494072915232021243116677692334919932685934843980704958434727746444335326455426368063580575673454591126151208211207059594682116414785576092486979862675163126228711318793380645408539125370734233119124535363675683163203552903359802679389964612910023607477417173914260806891040693237277764965983931150738254057891669879709453714039543278879219418679043414732276333285858685327310987141715186055931130509341549871644970206200684814558744260261241287489584988424290599659162317664580239469525243185174051932946043186951203984288225194033745809285513489222390050308803297892098483901194121458871512534806183324811383349079701790027543649423306995207685279189496269381603453832078044713503394599305491421721168769502033500314384467402298353336868176835757351655179952234526380771238972777747161166625080971469901339196143755878156480702042445836191496345360610801655659974263600766387565606157602500063058032282808638352704248112822770857590510443169010530034784914936996426037805993844513292062035539122262264923559998922498356477932153911178702606198599402586888958283361248311913830178346381572741187970514630855895439218982313822700831290522246353247243398851267332976241395933459461169497771522761781782821553086823335790678720401337113441079274571936079156671374759255664581151870494995497036008323497068581427845634994835629688496864900948583161190861417709737033577594531020679789821442193006472994935653404144290881990891102234417924048770300114311386793357633451862877248101662892507623516984607179587309922476443622840646524977020541529774466855084846833506970382364437775926503808184350031512375229117303197278737744117543881561185518081832054009639578552850479632128696832438049051340224010067239293354958961821202197957540731908519902301668336703618649546607156138410952919749643157937521159770392036229616327277465076199294174061153923125111168913856312410331078293619393859882056371927757209051778984497381941768534338284663332406044906129783005663690120224305613380023439275563936513217280680211301373055240929863773777992227339550927160075659946999122687753518773165384854490610770730272384688711536617402228472249878113120949532149196284654781429974229290191046761577469719380094643974698259844405464589139705476393897344542362358233767704166931396521037435170099397455816310375317047222368604385235102510327967004760253357503237461802883584854078946238815736269579123787891468149536108296511762662772305845675523066881926718951974862303487492230568712611443078282769864679817033628695862380585628923679988300469497096572845753556889398960271576945478970249797303545652032343618096761332183826918896136788474225397452517440616265895130680325307648036650887100620913974230878433663084871074741652727096055169175350560418943496761359069860840519280519270365675830296748798514307570988052652566396314600966648453122203265922942477483472150195254996655021618713840706803962716724125010777633159986733139236745717853635536971280581852726234786358740836475084005272190939211294569403461485228633731212893726385428535021538653679033477743708176090285622107846032281913390260221305548756354570713419787970271530841887033912822229070894127789974559335926904810958390231150354427101278081477197075771064129771577484246429962788735064507868538076458485739505383789254861001566457300938178287321486431869744699646171779946244834142983084876699935841263706827239928996458029824030208929619509281033575319824037933636519585014064221887947985380149196504668734707865228541696692138054099772822666512150905847593587755658409392060012562192905435816375901684351914202099382378932792298001265664770554627205391463341369281219799327119262983524549503774658100576397416029936002928600042630954267742136264834079654398854013214466376473248169813726741510840393685101881640331240487129537158232516621072425514053527973743494508016151075120597746832612459084262843896542047621764646138337797978400683203903834233675642257587862273295495922234140370367576440752619616482408121132452226743529027000146835827537457736665629034131873321613233576861969653287144614534377962907585323365316320072872759907171516953882382737790335644907756122500692046456117975215293807370602756239323921477011609083642046787523355318452994506338250823819835303842521574256848026765053714886042188453259619960880340752394567749369314301299172480565919981644070790272479512941461064520162542273860135215171433447322427211347929565489158671178581453165907535460195279528151333689504378973388370611496166280674246046765543747820330973302690332857546093712926889600630102798390588462761246026950110233554564602811142927360974018526631040760456991410996236341736906984206694456096945351210478567634950357498401009664486820882643859177803156458132221615850949872224117018620838736244289197837450654169714893645019851838216353220182542306045497476764130372409453197776139656645419524396852146786885057035204454430096311526416054306087097935021719760948480463447071097810382745181604972852127623797975404519792828448263915478931508388492387129398784259120178773110571633439888265334648589850965721405675241703276054205209296694217851006504179620328230161479059038654160168043800398008916076116529209453470338550795847215356504833630298487222181941626766578630886560441516609588377740278190813586879537609143100715057621545447896326258646506464160246068062343919907103905908950289400957205192779566456464796522942843410607253146471184198802690512295365102099627760386378897474573423715849772737053946507389482485137862739309228540082539532838702521950846182110313002012943823987443618572079439010713782728309485202969498379701000627052303327574839388190895406559941964952613314377907907621368740814039271621558290411200650957531200330327083368052447634223908728286038022580769820597485779106548346953282433815893144285238459833397164626654158960266256065694558591430587667078252668657409316098846990410699833438683407337488228112552460874378342887761980278529788596172482262653943245265246434036106262074304019756132260462454415971167331199016571228580678965895522870940548887615008390378962542996015689087788206566211287795611851206384611305433088671684209973560569010592265197667587253416154953275100410251280212536692029584273466516336804125792263315538287447408326150725930940171554884989837951674730744722537286255376115408036676919292346399291123148879666904819042110803217112522981803548506261529450037088238757151404990800278169463461485451560604728120772457023127891642632748349886786982152021515798441749227429781281307514957299040081312443601577466930702999882327909576344992854092848621005863235219749674482075531513746020284596383529624159048621439975022869803849640054797050133747115871486337554611476597323488523734213571500808393233463752836420702917465413759999503101349691714045753980173165485105217985059746525206321415582748478931632515257619897311974783062058406771753765575516242069802174750486628381122044784048547954350369126175179819669915554873445295292028636874215103515518449395745190378571660019833419210058106816192406457657844728048666419736656718931101495839852324793068187275281901368185981365612459556949268772202512260401876026075109397780738690677347164584591801486515904015020610546112611281609727242146657492524293163268519943238825976444306832070500999078016367324832250502992275253708016564752261358540485049468422866638869058383361183490364353453886893671487435928676243412951856973977708682395947686893712584910920308648153428086291143923902890873206887760213027482545615552836346625389218515509344356852442996393544651484202299223617856001943152431217190898740686771781777597410624708150461316459688295714351530094558900955186901571873788221820155043145223775222382619546306469307722383414884175621039159011093335724286267272823048985649717484355427277728203108610502755577767887136514954751838617412711871056526290529149208893481717787176810653518215678109089757780516002950859680177547764813704495448461876920871241357789413766000112872572337608219262552299222483244913048166835602149041013178214577615001674292232061902018141072835911731184062725575987135856495811218787583855310788735237889060104249513867062592822056026304821718146553901709300606818423339061604616755236481585142864449135334924686942903285486482900233749852030445402213141330978085153931946529031621477763891866925001083186781038559986350088684585798710004232142078265982271921047542486260042072329009972272103305973363215220278288221468545022235384839385675870989607600556237335641014808653201616420440397462963189191045073643157791759677436264180611856411846042058671439685755145874927012797005143974937966587552481312186553911659852676824813194931659584429599358192046009775260501067476666397341852013944187784357955470660966497719193189224709246866866237622722964359980641020056798134751167701539461992968985872954515922450040280017076313388657019483364695858102958366052831900643710786700450071684535829819965638991437476082391408217747911761291447771936675802279889588896483635057423969818256321454166512236900718441436379302908975404219862014059962458661422841236250483505425371597275264078686769632382215193711157257909867688314821846177129582844542125636473000272355835129828103038035476934920350044617524015711907684889999721286859106244498270996178503203896248649738856259247066945479673871152224666710935798921542730678924935305699627466432698382723977832303972128840285679521825227894456611255967587329013849282297337788715198164475551259388118254685840069482190317067578101616367653186363535277637495934395900666986934819680558488697815980373449680112642591620517388646014612467466095323584800097049895252749751987551102064205141581920994889144450203365781212465175781275883668157711992903021196991739836634981835691037168606719113518719198236193630609625409901423505953854346169782802739208328914843813898352392628541143454545882563311962447450429006366246314991020412264871161461409846808768292453089501676540366289348007559433235199308743340250623102549076424826086381639400803277757933314648013379136060423245399335398902858258267523111796862094090261634222754982720646018067248897313098938631974112518020491759044520056887120075125913539557693588389969889740230930173678942540643768470368090454323079027093920021907138522378569495608419294470416046510321701010910143704641214303549238521782995797745064994154465785545568203528894239793850249254639605946419695110561780652347758878589091765565749456812051114005284038384160315889057626751206608871859787581225548168005209647046894376235412443042141013459105745188668218109184235274831441778207011211945929009762748483507029150614757093188598474977325637866612904213701319598758531426621888753950322180784871727227142039760390267735361641001410492967152477371033896134883997635252539346885021384652534539871568492729329063443443581920806797822240204487030326650602000626823303418370595472613822526942232453529377110669539385408578634571813002763397233633683534969502675633451371214974506141423473947664297898522463801880416767512308093958965207091317728687540765200632051073400914692112245171564144598464771678342764523415664105422773615468837938258981387495332626750966160699897802672416642012814497065157472515679340591851393397852879309802344753353039210400506568673743155097292064864668677665272536594795852690701571937087721969649637665221824306850320887895242080368037145999345246127895952890079555279781241611922104052057422090096354798061543919844459149719950799078672790715668090761403856092254840494185566571527556457735452994641854705496951555504329749699591410585562882371407502231589254746942134863339011236126309575094220111833301357396973995361912517320433231110000295505288083384862621012976658256279119687807287140537449105959614247402747303465423912718887022612230817641507194162627237177033160744176829538980752450745864915613483965776156027810012788987206581230921125991880330908175387191147913817734242923086345072270431671384809294731097339292450810863789059219757662481132788157200346711367291876517534361681105598036771729634052600512981897728598322244522591431376665441238345357755900269892389855520999891603791418866952438523273714185313961118380896794251849850311151983633000171613897028989591156746668907487464132332934052604121739545660188336483599503546608261365584297722647037994302411779904216773436595852603603364990927018139905331213920665594473215521009313814960121176228787004001689529682851611538490267849325330424473902905849140623573383527447892500900341860382055770389584445854270226962972780201726466857272482164342527290122665827160195598612921456829609790578483292264288910665525683137531182984111008797251413738038950552420522939479704652548520222608995365748266505508622404265015125881950104947364631830739322878375338582970981485127361706228521955948487501153931613330001858552936691596109594622233442504345913566425560567058426789390170700741807399857917043032109083995810760563099017096845792169288408446347159943327660330303212471288594582083784232399346078841676589537572482795964602614936738394137304399801934196149558337740505748327052703042536845774769744878858574070017880956609575454454334824820696122494675525181341036163654401407128008824405014943652491940191055381850324269722414060384430219929897062848337324567756129695046857602218583616788520457701521758147527012456021878350390100897656982321761653683899773197670092699493332693158419931569475173614458772510724992198695697439790232328823827149935895098122450615251269790630135702687124232850258366748613870373148664338992341052362223871643176837770761652539903560182801184231603991356822162191693695150143367336678484563275825922067962972422480700251976948159127491200902976366433752958003522487581437758411760765096928097879451904521602259119096638657153485288263052987946177910375859966036911035306106455704882877007002144684995161630984567246917382842874239550892530216899869125067932859009611826105375482983465882795353756548359766222691283942976502324778802206994512914609963389415932778748493542924714819707342879013127430914997827996876035240550059545282054217616580809654942940422536250859726754422990186445900376892008207415550148406106461713845534201588623605196386616417785943422679332329737692498155790194657485937839975771295793881026439050184229543610458522483174934800939983957276047554023971620045332495203345195842589086909613189231233236104774387075769346484630256386032539574019017631043861800085965947438385000182050300000399401556302444234438085274058328184746582320583997572100181374299762352231715786448499395867222700912446481786083215142482997977267563811840692083481406025688883461993302731508949638659036567295619422608864065269763298921320861372720243671641352673747784832714589753667112836989250552395520557418218734747894589601963165292739673825328509433045624488846612094844737535954815907264144891341603895507504658496493360701071874620973965878277602323208084369363605820980659743949102852758581050865143272644605530264315507618248913779019079112171346693044567958996094301846448810898223926447083377306919114097779704376820842471953276272180376425393135722312105767146954682601176198326748156209815258134909773506480338256937908293593425676584505947406757933854965708329616169823072783544480788949319540721154733034092699608094274695863432724130713766914457054606157393801519278400537862000418646129870525376650118694401421570560299920485485221510708523686440538388413406852904997670320106183316725792572208799783542223048472367057192568697613336358906178058040621663467946549980444264303163260969865141399207928121438315032414423264616887934589670823285368138319552846828734523752297813536173969248866779510658893930232633588881370299952756437160487664114079876535110873650441216799500633593539344539898771327319542867020437692975300175190023192558147030110982746886633679535972958265022556856398959397814111589280893224265397897085262640043124130209566368908093640278557102436323496372034612312202003694442683671712705888034080598471520451949680054448982887436281342670088233867072064096529550392377903394200183082967327634517551798653496183313562653991019735640300340973360906925393294820224566092403026347078219023027218264177475009134689729437251629257354463013224933040311175567856558632641742057398590415023566631553769112018045522836003402182016306423365684146967518534031397250906733630527020185046399002778670296316732797927511745737616344607790495969802065070214746819535336529682730148041969911999409285674351863355148316831415732785850409097957769318555102100843664734010129544941461755768834486139429740642829793791387382404189677784496529294671455663320883354073354472783958584226644113160399619772554538654588405150507994072900148785398902768031697862102246151825697196616017965807712489548126543471079911330185675974211905760194262948838015267808493883892403687308829321465533868795055842246715711117990723667083968268926732152409784496395782505775038104641544083454219068105026760079096334491355453780795489245218496875890058316311682125222686695376831336075884959962851948404990498892986809700918302727415284735687309449496754520284049766481784611828894302767139790887643365891031019629712115103298487737148090097162553755802185827321059311982182266243605513100770437671971111547103289131878746214385887110619951999742209942410955080332740729639799780401631289505037179084546980091044775860992500933311017124570700272677383498999291540864639641918769531543171568764634967420924393342730107650492232473965014646156387741184164208137995997737517357934694103129143442421750145641282906273919607407685291000132908131227434036845614525061012677005847803670523337417297113510970712565497096678060504912930449833246497020789263582104329293087221322889683287048404182668717532499370228992027909707711211275277558030267440136294772639192163004140840249126828516188045397249548506326358252995672609341597255179563608719641459065093691423618872732307963975071388912807201627892725264028142353321230984826284226874051585290588005194798820800666421540344748146461441774533343087695067763946053671153768258887961221403736104318569859257542550803597585300570253409550082576431613516726977808942315230383371746223759297063942873612414279038495312233117380337987512024953661185883342435216200265756877905430473749094034900409477401692056310811044144145728586768127524028794026502254554351377873735101471715758608001557988071033663028208307539928161237220590675910097115190873870359845522911609390693879454186521673940344565163000237823351742924543044533945394920250405247641046182230928934289058905915676818066537345016658289073685568871071167088061014899494010099449237168409716155788270978570661055385022113686219991645210664760230310887506030429765067327596466851720416710164737792924025498728153985033059777443217179760550395020194825015258650762179328669183616318173564393296355860783943966566205440519789198568165906799343783906225958097755165116711718882855356683441149145417188723697385247665793529112215286554651390231028699091665375709506660413014677021841205655590693147660757207415434814576793960267519347066054599724853168757690087458097246414352068901369172224930450417437894090838605223551882902031730441773124689581198433101560397783240062039154493351477209230647339946718682193810215129283574093135418380012206880982613547004379825194929550593630706493021604407647742864876368439894407988218589002464017555772342563924393332382511666725882690982452594711460145526643791250556843583265575949519106817430701151461440656046945205526606356268929468522779595421503837997747334082816092783749231119222084937164762433234529729712271033406618154093268337018545727857786236720634281626326944243435143057595115816174645339617116372030844640794885397054977692794308902099050526622796319031695337608416429253788491224566404338221834324554909667845466083645274554989321600682383184474460728046967740472240197766463263585371558126220561883420869896969672340582902399652899479953948422104317030830319685832076418634544331205817785412710416671701533684690801228336601303995144973415383594624721629895617102605757752108847998868452373355304649502456739981623041799236616580598761042636778725218349048782200559635749583591677131473412322384582666855661437382426863250508513116495313460316562424669003019439946496272195374204071518835717363175194167808426529993694553711602631314760560288592808654002562840179293593848894743819562642289335320319629888121344764774549235814942611918473450616210584966275977855244519719571105930946132126622978590357321812605886182937140271252945743504722299491277417575739160013257770276221321147117675220263493384226239483870529824537165379912545015764548985328893835571631731915206798972723589929618054365744876359317319985433512997898871600684912975816000303148392135018758747815205689471520921899466054953711735346118109716061867336008308277940205835690817748701767634078065535986130124198279482017225110599166145479925140630096310782852335400088347314879990527744181582518002863294872739076883042101809441627351641533475730852711547775665836524025433613493323293736250468892257604836305870396284211145839855823042723404748238207990999424437608970129212733734687178326196148557558734745932053972521940886390260680835132359908014537164692625899090598099548263525363035613432576745383016540727726000499803282245671087087481557812202176145960676636587880784123766471871947458722799673200281146388664843657223282756879476135149933689442631136428968644295552009692783614009602889680500508841160169618741796859240519742341683605748648571002165383978797596126102326509619972794323836084167467391687868288667772645797668950184479874934146744912262301597476229322520152211630726915226381763284921235790337243329702520168723906668151176371198198023086122180771602094032501573312700814032808318480317962348718936769620773354602551442626227614430643356910924910697517288723010635118013133667767672203827486530715883094679377010261346172188128034752956755915730273269653782055315359705733373193589751896539064755241843590441834777816621940696216971773397035637317446816728822094116496454018943419702965614669264553632895695026939981236881703310822626427838474271137057917516458419581171533823150364758623813074356011170464133362987831261334336670520686493113841027749588602481456962863959869990175391276373070976903493259740684426428186372165145680130144792189636860672727330805827030834729109612709507889514774291968272245848262832585430063666882335901627491453046588959763876080607492681829745831549381875378837753087893276106335971091663556621384471694950163289309642943857319387170189980355895581527041382446159902239543365622384099088053684709793245222086016078343184982273332726897126545302318629763536565261852423041168769045102949563698856864294333721383605054004916663487780321549015807897911501947618859765953149093265706247187933617283035962510456253409274331696860459642649293631225394382541290122902680451958585473208375098731862817783480497787745726937782408293286863671497767651175540428685451918572769622609744711943390548276530051451169675465528252509463815349061456861688253122944678357516021104730671687607215523697440355133883242021149810650593094745725064880717271966933447467383874863266178496029611657734999414150281284933456275278586099916382142157098356256560175683833688428770892431429673382245954928136152785241753091720295066730501668149894179368812589819940373328933939653997969219827801173096151859057519489959039357482682250316197309039742605962167632750937080839859340498056650752441118465124668422276612473228608973318737542851979497077606675670393590353580836659813508374321447491692401114304640704989126737455892422610830200989299565291480434859919281031982757948554160678618736622688045903314301523838590317267492050861945499116835172088737726110885843196142185769995712648766862093509633265517523900348984966980830808433905388753393975371588591017427181891380251412539242531295040483236124883812463610633425925058334818871892892074950916970214361601305653654475972809527128494453473632576873861021741970963525520191101180750896057607205249722609419348215999294658649856852394847718698573439091999007738761009291340225380775077829994896861107604870196246935575328764415873375777056740231424261458497127622407834125849509145697094092071102028660018212854587761682178282033153782934326038098531138715682283561826119640029017926183209075861395979430274851027401367225912071658620892042186981514741779680100980439527102989997932300657867890706611379290890672689922416364757214626538948393112119053623869877041900767297894093084751577548133587870386845369864009020160149267967894685904767467013070895467754985504619829504887980313796293189745294191555253637481234626419836966858828176969887524627126267136460121363161269201491932090757622390331219668975987936602684495131002640415642665306563578372511659398916321624382197042973793807981351660152937899983186430882381355423911485001452428299386413609055272609193667292850727170926514157719114786843616030677224654238318107192646668895090610725230018333024930846756903426591064493307143215624836035140793105917346701670849284051733438620835504664414218491776406300380809179571570605997793906312857755977911454089510590341780993098719007329006448736546160491600275906775829019244896488537574358268050841474857791855807609865942108495915884324188860422943982074744711799095608128376599333467541788233515405313979870026321906369742175116038705516919111193843894722811146019273284714983056798037112428880970110117001507956719383915689516352664763278092680175450773811447106551901038740778350784142449894759138340911757406523169877738945153079122358201468408929457561599330928210755706199949654638794502656904059745361184024315191595489402270196884371934516399873215688132274508897411808703930388622455574996593030611160612992468215563391583777869874598358732633272614596837935217057453139871861637023717085006660716297314334053718710119043433222595456679426104006208203272535010926440719332343536283486044833780657743706357061338387939133921246139015238377292928895484707002062727179090524322075902876623912566668929076677311620236014894214139352999503278999064706651221907671325514749824367681604998060225020646667846705713181846880434755141352746186128220505389855453595263325791989451974311468958193733857123150101161046097062655728463222304687768857962759179331421197889449943866387433214179855914143522383428308006509743374616347617536551806614021922011584209990021423796632037247975105433791252629340249157158415726490424702483187769690844615502205621824703011338781814818964681279589919615179208101161346734132052952741955456976384324510239506935535991919054765054449498370810996622882977680320024074155878126386667788930009654449414761815740592239425712278893060514434318148836347174922263141376776023421802552007614210115492534421126913838213442994389993540834949858250943420082725976483388201085370117590681668569954386440047980193719525355343890337503524146241513297832854686258039930350716144887600593318681510006919658860228590415725634570498043305111025546220258319975695805543838292652739974733607349536227447516996381785344211227899596833577529113777276517479975234868348902058627455346794208962495598394020870624244063869486735114019931942570776460842080213333899996862244848065833272383219935590138406211703178009273747768455190461240145033262406225893467290435322836852857381357862588946651828513332217155834489842363222579445162287565977516449022623601298065721830845851777526779312722757739056609446619886496538750750258758728195102698231603455453592699288992589052186485120672512489587858120553889530001759841665651763648091135427847274444611922555679436754277424845610516338873591933857946210789303665930191086656156870842646484292270793006991165364879020751004067191089793801147936351632108800336076086752501125795089296373393651346961690135284463461927262984352283367020882175190170536648726215814921172200142820901349790089197805446116690186705701362938046404357932720228997259133343107538365466333761630655048825838393190248720436907907327082423520779447327072613444758336051914168460578788089118704090004300782890864105554346742722245068384093927520366405656392095399767614876591406790837014154512974674600196846222490939925041421380183702237683982250624593828171739372812467985408932699402260748775409091571182469162002541824003022942734853470229440058346718551424654551051388775341190590337126619069569371277424870222893816828325622980862919376521812998801330325854496686212332296079544204510108734377537413956873612818898015788775982753148319568459223106928774197713049512535153046722425854821313403595070287640564109292798003737991529358607390156109197087704662602510258719610195178179277400827386516502982121889757649020978404627411775840426869162046830928878650429675699198989673982237776782036805096271459781092585815877811887347649228352443408813511900584563438104037444610122759494803674142844269871074653261564281421894594357663926184735568244841010593237239289459010171475133468802616831220072215115217412214216423588304802647931066617471235058252614715407878817947019985840661704567138260425466310408115229219352435287566008473517532222007294158541583585455063752412959511161046588388092588945980678891819886794213603541466073697804390789580681540064596059148045809489155468872731378229405579034255110109872454853456967444511295081051371177044824174797258071917889095910338272294698400113754467004668647287434026437342222593693094743056017101543180247794942407713563495977492786640653181231297336663369475804961856864423812114018981265823023383103950693265332113209966404163021617123234596789087185599377577104602232140588896121590019401985922805462313078958388519875802372462595670789932503909066641081585936325764489804752162603586592889564710214554331172626671265115150128693724588606588508095548918632242899544206347985043653427973348527100576308073989673018846572784984341052492222236404855457279164552013895244391302417689033821991609498649267999852333197813155356500691365794077374541022640921857224612093190386816979201528789093692713361175083681347870316495303554373982986016208912343869756230774626675072264734158427812781661064074884605712453761094192371856425591155520108619821187788905561257725179383718720235222087332121293767790735867077372568419201820125685678095762280547205957714671863103224742532147126945878551811954147111160496390781343713561523567693108213896902353139768145831722308333925041939011981780122696318937328776459219187545643996495805785534666113596234718153787144674059161994402056572043948888070766350243943818997554494011825221395439178473946954403727738875404930218790227655488466813632171802374821578001611390724710450260203093670590832770314500779199672387303048317790996980403531896386530562997618313655470656953485288410140027416304013942443281779641090533536821136746169383020316906439601127319595431416141838563547258116638613767216701188551341227061440864976107798577656093130750061953992945956510476965633642073298114084206737274817292222342833760800123809500321399140548024665220777025853931459832092761752606891754936668762920569671930194104886857900105541741623333649109673352456268229077350601787823674175127931964708050009674533339094157793781959837489915541218772320043057778570562904412439533882502233217441976689786848597129260308394357804943966932589758603582434397365842109207929981371013358017708472885352892060197969739734126458306873523792190552009316281262221600035934704725676452346678248174736661467353806177441190632431462027590899076170900240056964566945467378111526017785053641107096706464716959823880971205692502248248262868194816191765773783898794388249544367032991180045995748323800494550234589159666908336502962111741047255074688109823624564233395290469145015093775892254808715557299711241855507273967570008336484757324879628712592538970790291847245440600110318535114215380565313347886392728190741820962926499647195100937917952283811107572404153208149210955729213078368884338079543937458021645010586540354896138494387294546429159625527817310847815013670676101472246172346431700454216262978092556650428152006039657336135882779628473491582368230555069790391712899000084445365710252088915376641251863307995597989921986326120936390984828258415722300784419400163268569988471641592504575008068313030701638972209297807409573096061827184088105158919740114871063146805699876965115232523369499720330698617930697892243431727570068418526122273854243121631262429552207907794531846645042052865751985244535373277394938322987646450136342666697892163576787249729259084253886688359434706663522799756163181501397760819548544347669826025511583616030411738422942200595902397818460195574462586959554798698436929496112937084317097621743420317390658223003440495257746263421778407669005372617292786917883932938859884652909709714378681327008617547337377227012489133830700468332436681693106716473229085091955897757510257658804748162149183864060046171019898495731151058111170594784383192832936151239806440030734577508848671961913583853757982033440905829799476381014014707302444006401627030866054446997893912362533804958325227617659640094330831549631715114888031931135399585416795278670860754966239452653654917187570401610192462927543941050273331085627416751251292536518339581668093586074244971219126389503239100893354904933952433839762587780084456556440742176109188000654073707594433334962550595677257164212915735621474566769072630021281958402188306827103263891911912022886478668896993074255928106629141168799454782393227695552626892133150637554996751052693630910395712764439830266543208198713149245414067139020320008936719124182451806091409008373075717353586038098232352235459498112036476648711301066703677222105366579054770645413830993418599500552190558688837387037270623030722285494647117993026915673736108908485450283422939919474447206897185440283891654203479523193903489220429816645135726145059303889350873185732401530628791148868722184931232434504400123594268935544947522609844835743294433303237938094747760692756438287860268327981403659770384680555336138479584432275008284080594605022563469686464507539133781836500637231778669647737685433643675545638755543800212375454052756383875743001567646599173200112932679325366386294261095290187410135132664267137486575874042804580488687699942378993941636776753214710422239739408095464849695462960502993310621918142213041371174456116626128173165748764571152800679883651191382185600160688751065805520121461738374574814902490176412894033186585241208792800064880596343933633848359996382109725454973391715548464851538147001594351000054617508565996915902503040352868764822875073606571267562541612742007634556609371440700479866121019824996517156070747205664556882386250617134952392450816802848131462432946670949529132586558206357167146350106864306308713789345192429793789854828118756508203332803320119684069394808521149089979964362250811071941152961253760909496487010120452579692611114842303854871099492281154698506309934467392173782490479734566391734966233205300561662442463387896001855555837764973764091458763685563138869240289003073918888893797463310047719286856887158612091634715219104632668326780218698655741466714770579103409398070015983256157631388021538921730059955792891015398507582060701298122390463589359112291211178475666837843009208407107873229842989201422641054721643550979069805536805881553733529060187967701499729114429640257417870606166255821676499880761905884929904275924902423829329002010589226030807897753584007236027589348436908366868384359284008150747101544869994580720642340415102115340239255232758885305346158084501225819784589837751374161240903006888719271583067301380759382485973837008087448500311111998909046483162674600750203076329788282955245585503476009586237155166743335496325221150581904131179593264482963178276920610745836053767010179114861003579909704850931970672360675226248428090247909831562345241437684514823354046430759985840008251573145253365767149641076849854206299768019881208577859686888433512717993909353261202708414935059504273436899400529186882887741735391877351426382364119960984683078474028328858371293944618337424275039823900090799180927617063273522428547411850732961990215696386740912075815881097474679430472123526598559216895590294272157206098859299163575802201610624445742077410112772613478063320858547545388268648301690537714869327864728934679220856701877963587660725863370582839882736277147902649571527796068337071062718669001708607480920935492195499015621125067945294840075453646867775555538178798321080360385331105917774469025347035043731206550431559953349846046883177242973290345924733068866463141220021997160185117047467973765831735823884473023313115851329566546133314233026078636477164055589079762772869032863825223052675663810695930332284779499967991178198353550469717189216702500785899292452965230051918841000291988648211220528607450557793234553739532633104218780075831010484583640479404583705368519312950357658806092776879777425960857849443407062678546087413825296890862201111064371770370203584970411394574701344646414455985803792794067182739650046074136976525303838500061877197752682376104065621828753665967002679792541989022646459709202697263536277994562087962631154221849824373817854055335501121336442963385938923913044309141197157414394350342152332058753828949121657497150789977925765077185731071482707635536539720500120404760761842367113755786069277471272147280949047138579464583023826279121392597470539349231873309551696302956505079937322087833338187012083981777033861625496601284871311484812826174958123689970552962572539692757223372414017559016867437252622317500990792784126084965415074290237407805959397489666126474965912883470312812125611319723913689347339325498494450271635317569196341932241408549294618175260544709395828645622974809278664114094446786214156792115942655690524127432257332815652160519109676032703348138706204317997210456312374402760097582218855472629063834858811899066046669480406058038015393439850072836429588802901082840189166910971567597149557043159517165842584502522678113624620697775556846948403387892876507202809312458418951309116720238268173880558389107944130131242240629920450397381571181479590088549871871113777835365883910945511532599732845123071730299122374617546981840737684606583592598224434661129025337343653885242332344059322741799933090575075482305159679735463138432601602027156989992298993269225693750503450421279982392784292041809915624477980249890173667330355994110985952759167173008161265219824843283470174221425623450733471139899764272524845274665118270997828929486551146838657393466693144277149471785370486919264036310590525512198996115968110520441093026398760653001819008100787758913451119945119442579242895854663744340702169816960345037095781855381164144413141811542259020504692404465396747288778547988812099078138368656507971961469526791003889447980138225448126476236863530506699257914639604231718220414700985025324578744998674608431780396792627929572912833886031789862466402452934984937859683903500295114868655876149574104860225647082532109453158191914645040897944008692931746600663380089389985313122048671880482837316294121929328383636398748306875084862900477928075612077045036073501454423547030497402852070623626872946934858202170786158141039234414047723640940591337921361948975787828309999708992850354361750956287137507721220564660548363575848658129504172213515423427914451385691861190138728548761295475116040722743235899148404873627320104345967648613223830673513805628835663040365018874373114005855539666754641416439136539525468250159429566421427197584938655256815685163986621318969979075484467027377162189779975785199457141233573283517118928934860550336517811785920761453136806967496216059066531060242690885750196231151170851035686217085708317114871687784083347180406574196074601153597785505946589272847050371216552957185021252519973778350981965616525218851607283076758582699682775235298975520174388631113943574013149138333200049752521388261848787127334363667791809250714145757682413575566216149505316126340180199672811192365273110333656350864018068148783583730622174271326714390706271812530922444422654111396623426597868270203180725325273171770357755067273058295483988204608166167635154264993630827248301659272359819690488911420633142796788498334047381435202495459860086856091642558445492071945118238914889382178706454085550899377319256257682987195109681084099708345466428832314972036214111917432324769386167309794897288845380240264259060767916702658689147475133326464912117000869240643835307592633648006629878338379853381163856469027682025034578706247962206755333791838656534721029468744260338927978227641775353816597536886110917304038415899997662923518032186094408763338012637768707763795979844509932251785069914292731506238418135766643266677714826812971048341539236443611447156967636365044286835171717237087730616870093566693670278555382340208662073499041887733669846171890741122158083575640386395795439467977549780959537050722462498312084911366886755813594929872499532631793522130807975303336109994090923278786839441198777423029684608380292605213941454914799741464866130221406754112698655782404349669120756090697193563974159517531017619635787321820890772815406800467055176074517316382278196670027395730107719741458188284854298009459003429292000552787292636474594938054208291116938758629048880963769783299313596937221428640926262270302493702051676593462912716671528651082932322049818254921344965207568476878537613626779635870893741619359654310871491487797876892675915545903503683738868151053393300272576310580976232624074339199531287520796651736264771168923459343218657337061143302723501449590754386256077968997259732785041232759595230455274348629133976630917346622366164747657603447295324685216458601321438648170947476539881415205999361590368340890521031118652093548359122661979446740231798215814961842633498606791006460500446836895035901335972511333387412376049643282518016637796055645876143613790621010603540214188790329340533306104210735436814554926974425361256699122067510647281746492137492006938151422020223275291366367032972932543922290391541721676512798046493685825978503666461032026526502134646624740139362066043444822610597076173705284487820526342894977719397629417505944565118709138749737601066004389934325493126164098299744990589603633679571424564295230840525564650425519981011402404542004478643555449102852295942059987299231841306855749792337749602516993025214922618902729019889282090922113981849770087275163274807844969325475736681920443804050231335832906484415456659805119600353284354412964168846884318705239990630006347440150394869620321494955376686519404398191777196127124036766764358388504877221724204767776772429099237171104093875908044985814244639728823459226180775051131044316151357044689483975991655879774086078644892679759924250124709631050451213329968843913422945407405450925563032778526711600856281651241285043845841346336176527352825697451099886083149564526079263657269312122109206038133865903555459841674242985990235237205156394088497941293812035438314349635483799646033052460773601881583664748079618910710699868562631519077495739020957059780442458111843140160890084586738992001153159818580687709115011804233951170037075145767149019148321830110148322481435384365552379242823928081256477410558140095035580088270959997505107706099225721153734932864552872802799779706385528142126217460272032713865592503204294853884056905809666332357401110129775448244009858066773371381003472219708325412987511061292528460015228481107081752882474779745535671373102317375475512955512634516476005145315632470001272025303682284208172230289173567759180224040938601912090260693760806074577242678286162372196612670571004175359920669448286204699090019991593101796801646966048504884334281213972481694312611881305435509581833559798479595721236417245331940954496366026912903957764954808471712003026742001992439904214301015219476841746237322522483192955904341432906096944385518191135144893137912451534550227674882159874324337617997725369120650330317757630043887265258644273564963180755846053895056055271901380790975264418637602830068296958103541662616620666400535770519967157264518413320890353444264761029241957932663501936034656667436941005050929429228900292955247164541242803954751090389314677172515301769749010661895591331802981182228347675354707738876094597213121112331271740750080915318984648176240945478164463013212829150765256982328146132866003954594238409068640360826058200209569897914752546798696681323415591246646858074907528292259304993620281752047401039008732640612293809389911812914013369701390264410955651823490054194750523374118257052810023428859748580759554364653203324757076076754875857710853616740095067490513941921556431795844015060584562237878175675916319388140881943997220378412810603511604669045443198994928532484579951798759685087329245156636871447320529445688649909938377104215041680251199303598483305861273262172666484354576689125604493517820859188932837804990211299676454480212809559701797332741016606350343114007033563253122774942619558414352917022918698119266576841301333692911400756417075133496814808008274843906174626493671063118585152177119875295399081799979312237899299941658928574825461624184628299340803264459299350084201682241643613145741389393300041944920314767171334615546672770899184717425400000172630524040415722029482879293878129308310256613576985572770892505597198587229845905099277697261466738612286555541686547722349590026258278082213625689745368702832813295428950578640291738164899813544739480970017798893813766039963080501076656358437375233228408417199345019441721652386798333470311185755344524162999090450658334025475915112432499321515029916588676950741910080261954451276360109178203649531986442233268082087712242535822136408371776211438601580272123353648961576392166879007468585072431416850591282127804693833443562191626350335352598234865460339346707959112455235054078154102224906035166450514854021048580642990979128857432444794128502127312680835180772305177593744783719247675352465241903558740330929889152982361823100907364930094206871568518651093236769876216568549995992200460291778882609035320873977249363136067682387781736797412171191123716893162229783921370669491238746711317570976643228104604729408690791463595314506135613545645762915071598312049066337719268058372845384992706477587576997772406675771185063378341816979887393337639353339877566073151848745389422829888451791786481180740246142829701045925024487756839771944472464194208056438379734211412714733878826494297267457745148475179431772060952991070526093106857199440619314610450711624172545987022040842869217309746917495486367798526833953929281352883813623140891510575258757034962557592356224370417971788193492345324287802865366533762336583359701345324351208613286697369374427483419720177792753073305375986023007185126423361141671436645046366862014523491608817351224794821147839651955145154084326365325152159275630367092042827854952360846308308649724535548114306769815425695666047941787815843251982079954792076609489916476902620164335017271784985093822395517141624110070402176325799159657354070163027538787984631531035816141707462169441664170500085592978100734252149812914654058040376522182816811388799679005096016695121457186306630393556496969431312509832850742918155034117371984629242897721719419302278891690507891080320610242319781529796632695821264551523736842737740767795950080958477900368320680411315350143568701483086481615030944921802584945757695231443355301951831689069016830138755217643427364242955823016249531522995790435262595947086161580755288696240830660361932763317850256491961490629829805750674238747418637554283875790559660449944595001913778854149146279248459105028847945153723250829584270708067264885633078275408415367309135227024658042450862995372120957868627965100714048691555053099881372109062877756093246448154592971250861520463559926850139132948197557594867247102339040876355215074875136438946228408833234353080901572039075383608119919175310740130688600661572212197976454489275055204966840744713167429856450605445424760114458296985069611970627650329322924599711903439628623319471024510703260515075610036474351015844515366197805756493356315064760842268915203995699389027765498121450271995667354517367853115244400303254266436383029585003324466877421846492708595029597988593177285436638910783182997531014564704570458705663452620445602693070605045352057743869711150408494612748188412032841063182369592451508451747196764664563933598151325666132469176890080073081766386949106310242972256483362528010742035453231435778373123616111286001063586145991985418253420956304059876829420684393048080729556630863195593968011216511216069783611156979259776057114732257369083679305605015440129169768114512602533946254680975845659300731684590194484254980869660355115672298897535342571980449145429480640974914498019377916117187336693525660129001342113661626250465556115965689269658858018199571342294766675895192037464558480951812389840643203756344107241489411186357680018192165287147764917100494000751891868326493832283687942861405771719047398148884352102957786333680239232256449299575334129102224297158581237355463442472434488691699087309616693101597665183876685785356458288951287392718956381235990682069842318724190530401153343921333097887974160487981401340716708609786296813545549840627095912568667397502041863491653460407205974625852542540072065907735846583624394759016102536002518846704590491260144354346377372452574959566153961594457533993980646981923281083017248174929495063844727053988464821765758804722089340153637106589587343147742678583414755774867830257074712504393352988320869884426843881781029448091365537390186909854799534044683239266171640089255274593985975345828965930037754061874519869579473792240317622167216989102751952224590066240125657505363625196794822998943541457724981747620120621810694356066361694362360112449976652511191438916589356575594115720010929988900689277306923448408350701095158372723998534011609090502445689816916204080273613347009587458775825391627053247419800350574468678348994811337530881594875968823374128921999422882698865921849590614298044970962968746270036460304098715458045247753823949655103900971992888499114134047820588769375685541192241468601153795816894997176410728914280002854481311361199896745543075397186503908002100315295077858064981830714977536032485053339089402844407415066101261507695521571679818658494757000686670879719137534028597666500701964581808708569188238768646035214893954375523651600396768534784068546792904055515469905523269795624077623521459439172359064522387814815391204564286165957004945130878207106997318564372424930883571995610284375147357293760897276469614789324143020029851346607854056950511471971358137656651456923172877487193553721188264921527980060569143714849953014728875527449699423550707217935756478198841027456485189083738368929120605269168776260781346500674911226233053530584635353328400981406564187208914693684483156967632114527405983477744237621412556546388300320998716433120157619827410839046664285496545047214049401486399150665567099046775204431878710583518174318737912653892519621692368143658343085600859485691248408848397857560367939626047157675492652695346784735309339033219491634015229885175968335264300798955789763440932719125182879080600332370668198287294159676855935502954589537026007981505052006331060005767046597339342273954617088885683626110363153202889248100615546517818083802577380900464769222866964593512378798586839020681967886730675943491726217247935437294331679541622420196808087618484315404610727079451673065092998058313971462985018798392812016488061850914572161215557087679046090816182519288805353119772549924784422500655994462031072471292432033220138687923370602391512267671403007310213939214816249861152888835424505011341368044561235714511008409882023705596125549162010856466632595866979218832371875076073427036489132037559419850105669315200652002975208939747030158094998294179880791250121983881919983019696149160083699387585784441761941894100057177902010530775790162580032276801383838246965952195104708595883026173775287310795124254436011660862199020802752316573397349861005180895707690167883636769609658686701101147819430128796795807055644833884205243595868566197570839942352662374044368876158990334123389578121028123038763624848232708739805978248226098693127590374049067976861207151203967020868961252638992326956929605237364698996393343396615578365524464114958952745186914601937904829828811190038278603522948495351787867175021291521686649222155094671244067321082279370856418485937101178324159203723854113284355090105539396724820435742832658583787724142805129670358031481363558235548187347862531707945533718430569686227666459888461804861226836010738963882409600880738620481388125196939063732293025156191768664105228690662529000630725549187072345050435616935496521142785501159257158840605131314889131150470066955544744556880950958264555094598157865287268135422364155324753725848548005739546991558128851739816132740133591674079390222323868557638587331882128952464154060946453969820045342123917262559612858551194642214968260924499144196708439515389218056320490597756921594206273369670579113419656716153125112878780083658429061297236802571434037779658704173487458745910126076128859552807535419371806596821072009442743193118222932547584319977560403531830200457544326390213008226988039543387751120040044906041484572652311157248794343889435326550187365990249846943619409819561399923164462980982210859356970998625589543019406034627277314255621895879539695006856069432113492875094359761614426780848677025981840264882507252039327655432017229284333186954711389020016886119505107200054651385166736771921905845887432779415958500428548202231118250805087249260998590000178693019985955752596870892664066541712696247444457203093684703637784432673261660113471840545408542290489900100206996615599449630741838184289734293997668501824233055140023643139938255144036678361673742931699399108230551026303911627404282578692010461133831641451894335785894167368804598507165084263559233536755598015724478453935601043916977666864246920165962678934296520365752314815518193162143461088594193493622701735216055998289702571174642834354638977582772601209436496011251362441424297100699892968763147704299886240652043414673079397692410054852724312914714692077326989660295083596002308641127119273679766551760672484442234215889649336309831175193272572400452460159494499378253730063033748928902693243191951135488036897639443892998912003282072599054633964495656201809908547195418687404366617207822947835193277972294498285113547242471249529788220312839298551475833611953562510241975727948095838046866064166059775822261279027874696689089829751267826596518928206364749503974459977314501756601274359461359483960512281924870468763728250273085382071900571991227262714391808919474121746990914255439401517147112662680178759523705245510127932030625556811593640553587282758617670539260918349222586511178744655292985650777422325253947062951498644825361594960349583275382388997800755710627241953205248690774109010246171764163323644339280678492096219505354370193285897236304768176390951599698662679696128070142489721003270547914088407835025077247633758272367451592854121077458558437126009811460115670008245572474749707238135064000278209446882353225039736300015173483122851201702889947270093530485000999128975527468487200292402727749407387632301821405071699613199549593749929816911399090036472986516587800100939731787693502357201180429355893233229635113819508968632206661643125221598786167452189542916481830426856080454045194089839201967809587223012642031310829850944823807644953181742518764293732095941746798985300225733651589775245346442858583652676610070422316011756279435917490158650454660376654338626287016938794075404099393102132154679128115270780617687764090409146945580116542888441305127428898400072483519051596983409340661183544019290073086225581774194388608754706320475244825624065116524184617457722640570363808653671990537064965653614591009749332834419097862535061419609282966366480101885440781128789329512324523223760059637630477085691865692817397620610794830734044835959223462816997598077040072074616833914360000885564260233695186304732064894012837376878209975441620619485764170235512281120807623302714870649267836258413837777068250692664496603040516905439056024616170446037589181911955339298725395625150957845237872469472736843112788162551204094359717191316102154241889119755263071753120760491977505522177934971287497602227434504729046268698101180878838319698023575282020832351615003059744774428415638021597869788190068745190686329412562605890872293859394807282573881712126887448839004796086057044509059016584089702742488523627949375018920761441515707693221504935241607750021732600377194321888490731928569610613944679565246258401294755418376745614303212723623593241243967831983925242221149556757932544685370068624241561369547819333175014890096491977028204518796994011893829390882674717318710119238256551346336269335850500968145798848422175659970010433418574340884024550384728896492759922743837219626410311384322362461009295864139229329681074402221856236764373255086589172992400501975565403877244744572280557049617612900216322140446049809011096292708094322466617476782950590840799679214597488085597976323134160249137971601523855395361442812169201604646216057256639123149996235547219514564481425258646507691350831101907773543919460346215936533936641900491530354468108001513558259433449035349145058629439367267823654161113165830490295152975238582250890630119329116604709180913954635088139011584046488064500114820128022229316596698156003316415869014304901138524122060256469293918843160709241993346328517193730572306089839610495869854057984128637589266454276251955616520180956315676582347156484202099327762072097081637988017665239424690119669225547047132890605142366027635816389489190545713634065416068552903632341651633219292796988619988272236646465640614504909202866182280310135035370506225277818520229706110506848591234307634502128690147130586569732353751772063872555848171251420287623525523260304911676024215323509553854746399812008541417228209270398808857679529572251141420788792417228032215040177707728109797267746886342109885645772416793553622773145532389952495182215690091777537345229811826858399449123469108734697857559889264012810938722692867118774239988167542232503993336120554230620212960239066902642645804198047859723252672867140390555828378671668973686439219180139694088303579338368205948551468247578717167120172478693262668242658933350764309089628275949863117015161300216300309901667805468310398055643758531351110139479068621029693387252943580511551475810804625495994256278582662787012250503418727848619435729771701051267427143310737516083237844422316219156072144898873331502931023981674450755800539976687606704609665144181017942607620927739164063830450805325181907238052685576360736430961239638619312388050247935841346482716480001015263740184536449466325652967988382063158973773125698375792439303746393033403463168197636682241831741366865975121651697854206728915021759186826640908862982409283183350426398083662087963449753176205560543158588063406004476959310559888213181997636875367036785424481581818789301642021812297029986130689822840437894359259411074632941434480456700068182996530875937415285946037138043222527372850690235733485066558880818720169409543003187570617790258549281787137305578183602771230653290792377808496062166365490599902355537385607823743233484795259835112996293872851275851433035612470500731529825387994839178663240775213095912284063232080255874299794501752401876769394581651328083134477320554807822105760767701285927957496586298153627192275545530393571002502389763893757413369355968590286558514893475693165796551135017606546490972488171902484441570822538564860799022598329030328402322341646231750419177983060617150262962142611450350198516419692338266974267895562656533854569112214636117135230459818888471111741818829161234011001498189707849331918926087150620040282202140921598453006435179847591804405931380004432045746922044528537112563353660678448435570360642845957269657079759994748857131799500899322458863717207249889181157804409332974637026094865190923289715004429345130427228094626793225104188553156584171774999607651510469570649495346336095572650940494545954830603249066580220866732352116914879079497897951405102437747692854303396184331606184023612808573905939408599452733159026415788529203602983061203131423713264007514534449022179694770262195755408192554974802569062258457885929778665470061535507793268884418285687945488561016224156825308426375037971056440023641883847477968506523691171474177859353803593770186249946777740643394823990429914304873124262326812275254065469237303976807406299376951588075282635745231364376615623104693606706157132834891989710450295923976789129874890068483825454267908107667160879644700528325737180793766171288712322035975197963743283851432868131475575531853499246564198228013353262322385622831200952411802463237153021567926001496103034913664083886404988152799404680748807341649437156301037035465566637181745324311212913484154816286148916328244814367641027453252629997405198157663938386126120844115404577274526360206409001709407204051749963651739445886988998465129791303087684869593371183002332544706361308438065345664679769110760729897054138845532537569896590357266857646543622696753116524852725250635476679781015007563049277669865768560443157547472787567282030838441106725863044317326383200682059502202840837898909480155138565826836524634644599644747326155635278419080119998073385448708410179343437539127288625222205058217531368803374202152771584575699758144251960786504600826783260872368591001132417089932303296834922366115727495966166200149096324415740449642345713752417556379436563850950654508906604803797853699721667138327711824679263380996831432366682459449454642866419908245760229012614581336528147708499497203553159667419669614029374279577947069308757512958388893646236134913388301286195050555784192899139362294301980195648886866159772122234124789314160242137403010157335891490456752688766920246640695849974533189947405891956786343036931230061047459363882632938588042653825108501402645477140945515228830809933059226638122749408549873852966042767463682226582032459387957777081421203932956301326505359780660547885440043898243013974157915879981782094383896847084437133466108792362625280980516938410556748956934241171627911034450908354158777950201684233779289947531021440145924181654723975015062289987350325591823790805471359471444901240726009584527283397486817895624852019550178829558758280017388610784608259568055894821284293264061584745498839007428658836164477181304593018308827514518521523616479992861205891271805658978301962779475592502377497335653567909608069881903192735754674458073025253895174290891919675037998468203959626405319615486290978804664696643236852851311976567810102390836878076887327980431919514841283984163504367615026992551382550513383507057444059461596685555645881710589207623109112439376876471140220246476443102482555231401743596627459054917859637394339670399897615546007277089992699436957946590388835011754081415705549030336010934193463989570474952842009083442861787290971628308303133613396521808523846092310055623251062864139841076302533817844303001892916671241618516008883706236733637277445763922944749381980856502289622370298875544381491718105680484109528404093218578372606069138745645215169208176577952851843414928549460768640427493392422908138840283228357466926542918906136907620814158283457815928351869050251425503514474731688538127476587005656304095903813962471203640301624973884669741342759223684394544841118835654867692457704184589559914517690013130776954031697003857692267930864350437296181266636864013826352481064390017573284769478571045989387423803842886521135240575971754522244481992445869199026600901723951489177999124614838494302435076725563031694616063269317219900197723681950760106768377809260111245306649590174608397633273593141822348468899861757329817766174088885133953291688305315969869620202434655321827177883521076996075086997118514657067039144800564133016779915880486104994598227469060375225717454705440635238510186287614918006884401688457729551808794616704091022760215374429610900120194578058082352516343816970925935974207699495497944572753981842571035175647142622923357610472539296667054877157396618193711755158822654517578995963787202389327289611375601290306354781563126882395700803237490615399926437515851593164081319220197984121943518476775282233702377651161812773165968866735497206866700971735259448765894463272483879242721521336198693947881552094409677617088845914305836338914589302098863788173203228883723879152195661858344805846272346120843215628057471799354569932219718994667857659149561109613581543661782230319312537502815855718558402366074575869753825930211415638217365731900199934665727623967307857925363462385223191005308007142506963175462395377632970475401638802183429840838439481324882535099903118812846128199153391598683806671982925277426635615764241594441159670865945853270332841387732204632160906789655986922748950963027352976574635690519441027499407589379827374860276125729116513980278403638272048136753993872264541349245554289632270332265483321782245293663542581089672396397363071494672708344345781041374699887120264380355257965363142541853262361345673902424972955216340132796348100468272607119020826480440253228820766936829399558230371121848095545441873059295982374793796015112781775084449532735162180745032936918939013042978343515587246977300966313918626936029209657971125471054372780997703911580943397195576038763525977022310229400228901842175311857055713393376662483458522356333490557909502108763113429829895876635631488147419048831389124618398782199338857980711810947512531823554435092238239618529498267043470687430009952468744350767243646999341628379905221667993148826992188398054411245941924574219775298059632687889477335646162348631178967854656763645343321125297039849970672944886362211269331863935042719127701486602780965006584250684100463509777592921442246115486664278037495552772030826958284702808047725847786544470513395692420091867683754700577160363730535177005615349993449776955441566914741524629351308040507639187339133704333296266003995307463403744473327105452214168076050103716099211436118954304477032994674869883492358857300932220371181691185742985441637571281467075596453809930694805367505940651086430522124801852963211403420575665085293799342943981348373999876582963561244207844366040273980482355985437882209039118908543968320534994657675071213178913728682033626035437428929087079325388784653891148676690077616457853257911698615098582123021082889639634567845551677611474992366264953249959552288587778534090303303647389849835549558261436218290529998518804471900087305422780262457567505635029954984373490617588542820900504540820796548914446076174749072867259259748194680091254381643425691620702154521144124418054324006515448565567797154576702130944955735277222246017480728497322511313974323864390278814560657862226146211183421320942455484578205680357153187368178247139051014944194352048355141288914492940512876850140708492903492960375425496570087557047900510615629638757921160005842793049851720536081788898314463426923980876543455004511944007064018585158232372010261326790006746795555853406970230422030663618962521105447811105670654594241315501818182428244709526699207719997051714560603957420008105288723136759934250163671504912931949708061390272407238702986433201670451508789495997161789477440074872102026708156983813141685491114848149976435989441066181938799818388708950344829916345817163286568876747628844205119051356622253156112063247157616999288398735125546930332284692633894197383709078126242477871681312048021533190220421116996480832251604770274570225921142043555361497263434716065082513353721299555884704577849600277395119865693965258666714264648231540569610971286930520578828547567432555683011057262084483486204579213006138177901224067011053824837558566947654641445739690765552350594537372088495643377616084862198668862639716789634672068041207731564574060999369427342451052990634942998070672460319012290094635002964441439663011440795645628531465162811365078619522325395096231939842107273519071065075329222134503177889451839736310812401658781909016929373691603427529221414979856919301698878439237739477754278954263339703511218500960930777124331752995133303116573164820256807958044704289164471054257903509666906143706281582400794096200867970377762914672907799719470908117883223226896262558681020107047965158074188531499547997167367461188492061146293815503431373594675233065972953843741355847353201994878318544722125251116078757818944478870394213704373691993352320565770862004931468837757108488081325283659358077017434429926043932029113914927640599048246669423533091680361414730887092698291090672774096018660137343877891557693957251402461107975492247802149970365932197442870175102475342843033726434827954172428178088109022365214492864178922470919795686482616592010701872150438652376759816027497013141465272569925110725631070140985908025100074506746739517345004955813098049404038588218028885380915332866263213217229055501670575634392747162601177666443477937871014772269960654935491667544339497988003445715484338582729510581747434618818260003982012651650578897005278683906492160337947152840827726895425749644544207504273801952812921822936418483265100422867448363423588443517328510866747287958176880324756376893811643244411574949642434247795891557330265490938373368491779848784497682107186944612438001804254946505164544619758552035808108647025785636580289015895365739344371605683425134385368500396763484890156737768871768921714716874564614733086736958289997845534977168825389253439494252569910510611756736010280715863848812873467760311841820439584526961047502532780364550649259967335933119071257357192798653569675866770561942817960897320985560329301463423507171051819306624290345305410480819189583534691406012955086715644365304518413123671030455983142995661324252857239300303769517244978161749997271228066433205499058953468061362142266153404871833886382178409833551181797403956843149243844455984245685193479542009512799642983817001336747619587426846817567469061967368996023466915511310552536400784054863033352805547389413229147450373728546492102973484486814324181268510345823908840186024781869964283638763959511867412026820464788206743938423310495093180522322530343731048087610387571214513274782894432162791133406176328784922394887139996052194447727970606043423236934204066903562579900950555062324342984940767749637794990944259006110438100773501348946639739175074383635869807560963775443015702158906507644421883556553969877121653546514943282219031957157687057569066650732419122580854758142809231504762806701957632992545283356625298791138295795484384294211566397241188016308034690575113602318294026265939586162227006761089957228721794276501708905145356277821201512103386308130097025144140435550967171072481773046262105378318982256053510684821971002993911423521642952593349691401933689874141365822740744015200560068716090826200588596359971459510465340037328866557450610173465468199870568779919018279788549346388238920637285171894961702034890288183998062946876154477197711286769046117783419586735396724216250155440835201635004110439613909524215858411513679375933709106177745301553174816351908385200292221823648804063604783663535229730766975276901197271615013985410836789863478673771706109936680403505859013165942353011120374503772954073092347130061934683211422049681166882825713756756536465665758183392826281168524088148781153889593922375404936962173406063591998760379545948314585196215737730844275049602012694811912584620273265027665047549620293915682277206228913658845006330350115611065060479691687771737718340464126339225016326546372018952283130692326763780198348893044061374345751827734251737358305779735067234761806453353297585829360647073790282057232083653889459163926560218468578870329238586852359152249568705707049001598152385561458337186045908677065253183001210839926485467190019396702500203873870621172375876594030710886055129581694772064193126556035326958614229746746287022036091739674441256358524242680545569295949818073033804141060742279439449827474572269486704122394330140528345783618047040882395953045762477141924777970763582535472398279497586708115009344475986506166304124098030740017570035833722437192758868513216191355248465600426388300649776603671845045288952440184666048100975281411762528657368394726381823368930076399917728997301409685532476771479826665967411474253005735609846699168909170782999579912034471392220309790188819113946986495858023627756868201344683206797053907536277660777807065855326858055376146612491192700753100966148502564128076573555383129999200722646686915096705530149546434438328278779848932551217525061770869836284466290538355298574569938258790521984695702264706561708734387633206989994445150535338318785944733189978358793407823943572245497465386326061306153179829301877531135218249726092056541016929052644475514481154497201197670974854601008239320866413678084335974745979282343176370772577613485923462972283025143694169641084531782835744511360308837819572393661033482474769536838112686498717364203667406987600330378555168486427019793471754180426689158021545749071421881308513898381060577871376168102270724989756788088019986285314991142139246203235150912505198917566446421435095392743638659441341853309515746071028292380941879383114101398497134938549822197283147137720207973854687515269938096711361866813026135593995054382958508949737046008932975045412308316116172303398393772298121442920232826779666664955710280911631249465059364198500398325334500543695578877303378020956573443821086365010417864934181648325204122777246866264430305831424287300201274518627630975634225683721990607127009022365051536065606031118728294912874166659988748263066192652771098422254595231986590333147882623112245272831032114985466212783712062765834055806516336014299740062812239474179920523123703132189243875813046590325361245928203746861006187750039266242967100586938012452194430018081499682010402883542669804482514046176516090613320015612187704512910913430480070644480591244066380113970656340444510711674147612829623367336024035256504340243353831605233511528856912342822204224619987854227424477298567850137123116369409864449636808548872954578759898783805740513726948253236301658316676351108239886375312945211908926329113322628592919169566349807247617746007433041250345824656352164364820301490872554139176192056879393338238803660762238870029414713926565352182927434732405714537174087070652978646416142353230072648904002244503871287046716152020971955359171368289280573965943578884074609429713144616490580039351803099229437366582536541961384415831033831842217284637602245304320868718624418564156079707211959712922349314077507105683292040715091520932740113269381767797987098774677500031980836916195676399380220434779028290895514548711992511076784487022482195709628231512906485899320403940759990184601235250004607056561786402727184855766260906872584365489059522804549108709705351737115173072550077441720996186274538416197805882287159868056180638597764319441271930029508316191317069980019013831447784705984150377777686113390991932205140696914452517343489371311036170553627273997713631210186802373522032245642303293022197893099923180161500651558677406939899331265015155298941170906525687320234497569144943986658771892119152220984019088940454626129228127030172864997250949497516270585028234527534925938948938985025581658130007224067063851920987916458697439818982436799607463129223171201676152919423320917207331755568654355348529009385680136881476031082993897552577113124802138954493611073769701133421586146723096577128610824203865670938505947851436215947986557289131691647485858752093441105809283122755983003493085662122494575184344482153520783661075266128608245746282477783566160970756524849429876442093964410781927195533491691901188130754463592183808652272649201560241627471675616284200345181629700910845666353464166928110943237666662743672398538449935309718363105094316545562061474486769613066929422216154836374758191545427205182631156326232863367441040879747416786954461388147018570297607298528151113070970080589239842842073847699182113970611267237723291841438017746708437365553085813455182342936540353186913407757224297564994501757752219078719242380937550302036515276710216623331785690907339182927384208140699904492094048125739651611389814334526416915945634238496048545327279938696179505342992721922393885535543529849120264028499579484152375481357263509101019044467862942195228049217433688299943503714149541011834437737110772014985434769625286378403338801176100000814117674640981702063851341722859169176352517634778716667385048563174308819474339508473191002437796394424644851577555829690081246099859800918748724329044991854569693781368356422659488668149060405632998605000781904306515801007861618563413790807691499386287511533136079578743403038458452081204464216517507168567296080553677105113683613961799179583334192525426333528931972516978118751984738129218222533395333782432640004031346900082290904756744185768892043057858381412499722058189856020708107724731414202471336497979063192711150350038099303384003148470345926986087751847318690913258062353207085171115284060607067308872721292412365469604057263049315091275742439917739900942693900033142387832266853274103458622731471568346460745242532737704487511146656914491681239567581251168018622142767817523739015932737460802301580097929581509660802785826549717151473430167342023111385330605652689361053479036499941077364925208551335350805175920974456156921754647665617041809590536601970809304878064598643985590411536486403811692502144565153884284414914405807832291510455268943712155270962470875489899144680828692599540511855590445834467111606448174076417233186445167091086783963455027261946517334475058512301106183064287690412501285937323440345303680345586449110167724277155324376430481606621502231357055447935162607229553158502901816109569713545709273177629245244686505785289491501354303093599550657934871061340378874181284676144229150320152590132119343093445910227563460526493119839898438284935504345886340735651150678117315972859894886544393943251240754119335634064588816138507617175670534205479889954137955884797158622171739757448447421949619683698272842636312648055143456235645387947515461069978247139002837559934078680401087417454574963560895050976912981010151995271532120048039812893061707124448499661757227865571993950429118170518485189910355003343987946667064732980748685266280651036406802228203858332788833996796101910935084922736844903905988153699990396850617488316262411097206515685590519942472716102382476306177774194832659836957225473011683540888914878355246944686374271892004238043649991150659478535604146784387307385804570956261073446357902051870531253240869071791274491145678381681246185796726926651656883714397163708730559054251689614986847159413317438350220551220409301111192875905325769634252231653762132426826955087303885197675732487494171876883530927532338166087925265546698647959626416007523876561864155277875597277405604599843937680530171230236831561832330573716875425643012893842427990750127768171669300419846953958806432773667708104321946727378899600478511299275555431387993311918895069442602729090964571928652255133256823531909801507643664832484107695345029038559690555351332222324747611321062346789822621676890556364294317513215237972682902930836556709802085316625577902732217467741013678949221526284341342719262520050091379156717318349593880027823823306991565962595820777075093485914235811160006638738152417958805222057827203634228406319221614527053311970751454459268040898876422873326462451856646309722802250412936064452716100731854580197319616281998780468996370055058139806085970388525076336286736754907476983123971942081636418641595778525605320885540118648316733998563695330246590816320152454788824713883899969235182911079192005416973415012948223028221936318769129631043112037473676416557347153614142075124733757665606851350524186015192067331425229052898554622132641171913941420619925105357809246401686499574586174918913446754896749240120755662964599708138212708838070118475872771820975236850162811227464874388366041182151214457540186965661387333838056208084299232201673434183583402968838699845553477195630954199874324831569172483026730524923843042552699015563771885947079223503972164360233825117850675481459652579361990097114071478422953591889278359861547856813233727718836270789585516305983233032035790757681539513012286090521702014091132170029924696036371623901669346924172100709849959386624925625709575956938334960274001927536236102472076306506872607062491840079817896931295942022077339871339466146560514702881661112061001658822288457365699918382573375055573455688764908729275554229453109322098359149992521009248963705947146589809867471538520920989562026095745657976538675122366876554736500222221687189041744685442625513565122468632489918202671770047191189094003475201105272565807877269275376910344438779068892741460235382592335506782714387034194372443956614676495217661160832680771781640350685483075782053633821325874162465431847818400520728995079712311175715562964053918668338656448913595016191934950678149928538269334772715192445152325047324221440235004470768599566599521777163484391956466260330381062381812303743749466146001181232482452896021732183582389220156037337350115086329254240758658985170304473321144395916202185914463741339820012931205522945419189688638989152246271377007842229325952485597211033373062291339559465182060220846806985685531196581471144476602043610980440052076666325390685339190654853068005979638009310761062804617449674344174501821679309654343422267662260336598158259412029495947418617607262397665021256330120964925452415345965103989839618133915864869224014211244723237765498127693325384469204846356321009378256057151857214866556209732709195622844594875938909367922565024390304694354004556197011769965744981675557580322584624276209872374594948179822375733331192396743673645475466904018902194400142006066033765929624748194728758641188765659162297207115645143563330795493719611652153529386719749762004973784397445931773585182480689779240460682543868690600390699569804388787603550408155867410301159337841450666362829971476213547582391640632410566578020273368252807232735086479932254814779495386319357906177884044032062291137464730372762888284017760254043685375115857906141759482860035713539769629452734743704495415734051022187643435325941070421615725717341573340212474164397150562252681742974097535964591129459813403774512194830535446532088545621651260519165135359676211289742700877489615853112876491960616604506496122656925645043187852372250625615640966446347218888704931426391858747696281368256114109000200023685260736234027495263724647947403058045465716526329202052433897948314531919930574849731285602452605972922421706995878232980084861087834119062736944019909942192810004206785110239971677279461092578238449065188722250060825658839696531824049178220077664185262531397969265835478813552434484737654094065569085305511539493499442531436304737269774040357972226837270504462060715416999036773087252856070563359286363927897090125040410570798821479747447613393916070863706463637584473715734769826693552093093589448544894864636694225804968689726316321681085606615059016908765968196408640287628554444555297442588637290400860934389818075243470601110814932602969625474087465880569501120213793941606958263584790560612953497109534632384066020875514895540078553651331442436172561098488724667625273256335216787121294233176127961685526989403912830302542096691968186750397333119172696567317889251516271725898717932845686847608703689471577417759961847361801121891530009234913634965774936406265709524764798478984088105348494214656945956824580759647540884841036390343697546301150084795350442977711484833241174831640826720480974228714427370383028710242170519125755518880404637968608039252331284193816444609351927996015303096107955525264284225890041773532313877924387128688602013340728327844089127804750004686753428409484718897124237495413819080529951855648860560137084361532513596657737623039873167918761485976556024247715218068067507961752181112989111961267529694189446726609923860756284509928128312757128035969045882849005847535136884337182380350989403863483886894095944033502931211149228226328322173457235965370098153041772228084430168067618068940483273367802170516265430422621758478227416408374206734285926210061522242840425081853242623684994758083681363172818448915619173956978374333385411074532789554816434796276304611355960589023688427328510641113068941722531569195860914864647538675395309976927834896180894387639614870980635328481921247206192507521065489761701932677496016677337263354513282817322335613901467299052182764200778760865828647630309738476440755539312356253770939932382474284383786698703014819508945262999222039445861142196253161206616660309497954772067586033478221331387373626933226024436046068229007458209525825466257826735771897824848950105480469278808714797246159910021434346876628180975595551029800538829632816625911601986614045227306795506351449571115604091269071220745556211644889813430505634998497264544515227583989354448632149845899595214649917986601200318357154708473856186673277214765095365932822656854177039977150019886179352162642215636066150472689949487382312643338248381412459828542575882503654164363196969160399567466797715338708869251737024293030871890545778801715463170646323361662314041366795540308876567446370128927520398235112802300605982790801180563052119142206400660402847645002827589870718517686337906173921771167613102396168659647748285685247616211760211475551473829318602633785520192643788080182790519484187911861193047029275730392956092357623468110091987697829253439286038583871933500349258539403723999510391591735518880166866778722012968519234143752404343051826246217370552604225126683208454237750128809257530118871177731977283800662513147392146020069345168071060402850864551222914454367387059048958481990838882288500904308371353941693872491298724348824487968859501030506489259280479553294230446620620788995503850450643860764670872652520274949548578164302949625030228162237989128103245271375937845904610775401854229927526151527027644088895993145013460530975227953986434292034266443569450270110001533781837049592958578362789063127692542030984050146528847009476282543367315220775767042466384920945462042525205854321771925317140248923419678843853155460687214519621033455897780970569154751341489219650007658961408012988309413016691886738604943160066877620831160033119358293498735783190693709106182894112808660906571088838097296791525676618197727333814471516975866783194269855772326540683992226651872619218732675391640515332136613780878189571627829123195019755134919378650996378460360772129648363238464588718318337425581100059903683328653394189261728302641731447438686698959849252892929822978499320975325244323537277376879169756261933048200669859894161751406097606839534247640490503327653679624015553914855814579936383326214986494817430721620689756244401650762977532424513790509543057571622373453300428029166680507867732082778729366520357488492188480982031866654395925279121375986657649888171459192168683570876922375193309724420468308929155988193326904459933258370798726127375154535273988466425428461756609927111312946251065758177034903620555161497210184290545759685794834956507192676526326850913237837476424775661891671747435797398127544568943408192081773998914312011155274542052950267073964020023931257153435213164040584412535595356538899515022727181099016934349333274663847088752762564653956619605707754894174437232912668270236164108934332475063847049339446151876205723506788611183395869530246100655796905720584120596440970854501214933444366670501620472542914559141859657957566448289626850801283568399649971148854927635101621274149207498490356792200928146548043972821976632828561733911336851690393546944864251467476631271222773586630775057430328682900214016854253036665670360365839281955963402792399507208993189303574617564862984177922533318694358062082733948931542812546835560886012143116203267577054759111768832400464100299219923831117094116424163137079699671519500119114922268270389155206299397615165720343705916650095856989414502429632473664416377496204537728694765462447446292670332483710459819376488637823130941447176564922120623323807767137023205251230378764162679995346273064089813807792725269182987122172673762628891662761599036525135814742351062344209443458652318543358000118715339809108035855558921099969324315320376016205207079038746821187278513763923904148017224885001740503860422423328315611608506683517845286412212823516184111580521504682496582231726672992961944019151338430862990463686945567951578039078397371088489736020933435700547741737696580702116122472118766803411945314274011763677325156737697626226429038168382243740917278913393947134270392082511574817874042749501119346334076330327777393952888991059860952593607120375977507493783063570788238389795816640748608717281826842841617105192742926046410358617968985647199872184862258441777688859777334515699004479438838430552502434053129431668607463890416226969389522011412693171650020079427544024270803268730456251515376270660312048955275585483445656289720060683554977729751023266394233298081617007376224741073823157528863099802415192178849159146243222333587224121187513547931566120132970616811590510700931973862534932276680261928138382456570086540835599452560815756222024787817099244428280911800280957850535682652908899494062317733286334932192478344749554868155381871128902375325874418329122429571164764514327505814726758351559597448970578229580110800764028693483627180750820239432031066350892591965989883232318408803901942690616630679316342932454304750776075130892738604884267582392498747744508427513434085528367551468817344511389561371466013567728724509404644893376937570965323242220965006452496489428634733205881379334479791594157226549522411286123210074237695278873988941015351777322030484778596289131939668726382563354979458987553075054979855831034425533247165525847008290579708902280620657060530939915901373665476608346563979831888194321620309866413494554875034171209343583095257375512229629844964283614141095392349571720446744405528310544324736573813105723561422537546591707030913695572039961455041039362886590283683421492109333580947455461244436275940668779846615863798271501584953818011686354285238471734488906839307094851174403932858125087847553236275949877846868833283727675135436546669494275562402486258002084567132788998127241019546317147465156903530588199162146163162374211948834582161977782289990662359572358437544565132526937303390478680508823890573696448589073478211486204500356492439083968114727926714475602793599951435815291441039861171054947230284041414676452791932291118995846982598227235966172411691215215520224788757395188275615541385502129619990962375882611968935129875110356485501912882498393669252098978769052291851190475873529054421343402402094240910585036760905685687387133619328125937461622826491198905692623546772232158749046084392065008853005754956622529809724786707248415610170468632730566099424188886363663578365127498578274623446585534773805416859621665442005947046379967102785245298495508816474627671685736062052446889673905510500327462292329664804782255218596552873798632514130872325638922770189251879045369805216972560785893644265482450888332632419161662256400687299741710768472591909690940969994541014741896386925977469319822858315733992120750375910971437142625158001292651691239103077808743690420814452949220209658175975848791823870578735044220601907235071797057641670484750881586662717162146659634228373170372913982206947765594859018656584038049168270178231303407389281746079493796659446668740015636823625330032364049125296361620164150988379881935041906603087478862878136099165123782116786742714508088577564135870649910317157180819148864489785328093643456148741027277506615000679739029964797426936762172363502920995194777367302538695819944111413606048560410564193489266862212790072077043597600377618319379018325028319947591277969503989039442326025268916412306255072051651292245645554309228977839387915318832557349706835804175492896580255385188205300130011814305168133132966609019463012197244476513659085548485728936710754334450541283018039271861915612626050508935018167787740650008886691096973056056341924939826026587063232350218139879842684053338978937586763238585121829461130316403167368595138370898380706431901101395296095919240061767605546066705948941143573317437002253019230963971706591303416693252578762584662319846651277352349380393938972277857325312399560189748970361150674014468301638440604893136353082773481745180580691300179467289762896589993902805898293220945840708923275946492491099920270670203133004012638258434687584791380349551273706626225248842957815917069355729672913713244680539991448773284117304284878033812607906945483932567019801811469914142109367107936367550431922379641294642162692592491112783927471750621538247531631013319302260012604732468460981467891110016829636621934606399172544118024529791691257360005337060597938752627358255439154128019131525990258832895011543026152775923056735326386864916326848824310641000132061556829229080834853286231301592834389709857092240348861144430735830443342925434367633394674714066261731199766207864497913511683522640824086685594222774905644932636395801718796823783746803740913027263309713827517587299832235197713909342035860077786651766470385335305150084898327572985125420240432301849987728813873451428884634397215248845014156126666193489215580718394162973114127503955309656123676194500139631876321703276205282891543597119429131848997600479054186664865366742754310044246360050594336864411142609780438146395863774651739728945454036873326525347854585015435991243697591890079466549266652810927072578420394357621592376519665694144248452181264040051169587395503347240962271279285255211427851084122536733925508291345204935719903778256734579814550580953640906770782657025783063736079775791783898776357075165985229738880021241267240376746006055435830622821245887581772340877438341077655576539168645283441294016249461584712771591085388385688570483282251573421870123359960931242743238099174776288276472865518742616961842930852892008033148334769574718435871303106712685925914321056112444969117762909420445532146898407284207182624114858239110580683442856645906650974037140558113742343573482383835331331306202793039437046269435138530437190431254534790040752367612294796310524187224616452927826389312069671577485358069027214818448731752204699342029652457236034889324218993071386887330621748552175890636476866622391235563236224556752288356823348560945191064993370117688329818795349130688823470404441230994942496303372185473995876300449067274784675681946681477043906937455475028519654245211369523922124243943165711436203732729293109801893594841999384012858846023802244235260722602627849316040326921192447953895533905355997436526734034047780829575989900466138985427814159269204059381386017362612623509777856118637885654589015392532616171258889542004091398724927117641571461933182175983866100476786004417250123760556733651696921876726032649686386580071195063911755533359963788641154274505309737853821921036188102724731954719081266306395712367335571440314157600147195351081527198289336577302321156101606187231761630340731335240857011217019610174122299863884470545480112331624636020233997647931751693612631305599027997187589144403503866424323842714510750465523876097437366478844322762651305245398543123430422268994796587378371358056523664987073885709467054478196619211935436211518695699752052030662524761497428137204114186579656845194595630884144085718380822230573798918777690693435322303103425181558623391109342032308483071956651960468809520021149226723051896063260380403692609236306707283859438595748732633246564123971307639837746947709219936467460968437377351473265027973947787116791387016964736956104193685339565769568400575098154150821766416673038751545427543990882459040252193635309344190780688401027969033080961826845628705806175732326602525826216598813063233253414570427465166647630965662391173561167287540564172806741731120568289855518093843827366710669002174598853241868285997158278922843976113816084028863474964767705075280540345886293618003050122949945709655469657356393954510628359263516505707174036696419685821023347843189881145841106189491836727485728146905054528376367950010557095854199834181176339559819112846595312335852394967433982508645100084821962369009135553671836083241149442283091404767047088151361408197411809971304474393066659309615702911943776198348174653003662448545792713896992993636922688138493816144715830811516796841200615596948072765340197274831965027341815316010318655483988547064180513033502495726463826053403793129648957465355980491441861406867921473755116479860881362200007388931535608131275145976295114012576072097310962452867383278103785702123421967284486455167374177808392100614106748663696406683343194125544915507308566179477397371254914615833215746651577837800105210290966478394533171234447232548924637112301519897609111510953179805987320983435870788500691540962953884318044353277339940317625870154553821471029639431594067302237025121776494309768518624466535551308559137655371457743859686891773396645506019078060996563623505354135154026480267181565099757551785472615540810381203984130703192012297380937487442257498790299565379156781930750363518421940036494885375698318460889587805901201357546229540936723098130998833420752318482967827268873519576908158055425885785473325356088249290537593776736739401199161234733603024036134829370732883085934226881742252772767620736017490650943263936397073686289487844325933841077763681767624839411186104335946039571509268907654110500207112819858288928211917585536818175075433439958927591093293478297465166024750172315190357538709129620738800811586078215285724600963514984365915183734056014097139091270698510673963999375726237579637356835367175536481680315430316417824831546354851023945480604394548143066090266020444555178304524195091575969659172494610376828604394887255038663343877917266218221215886462085554262517510324001342393742947172013383348759583878856567646748793917515660207367243394988067119328466279931004207631960409021012748544878762050073136535675473527664770484120244162967879672317239983880217451695387068678251174447679848919754037320009657507154003687918122370439001825474140764357541137640928142157804014939882942110141050476730368060193275621378173147291375409444520095414594837213636070138337144908472596874197726795396232907261863134520432084799636100484252073765774307181602207828234017492760892144642755412640293663679373408956724771760266195801544733225813890739647334278068219423041571436672514203612441474420783618331556680479062502198511482581704687929754111889137229324856693664729235193307950816902561484517761892895675275172911825486087655457004535744660934531019605444525250657053604552363157655720353510179892496446938720535704453497425111048855415521525151977220389525152973226219555774903196341859079271763176291521986233624713009078893614947311188384932754177032994130383372833480923788192947517175217804265117155391192177712099907248001211931632624738900681166765169638985194208503223075873565083630049974417374552433894840723888086905966755260003801543832021024699176817546709939310097971721364600878585715808099769585612008024086783203351860804646058994360928688805889370621138234793252905497965785119722318395239179833258026642977407920578857849097254858222950987292964293704396713177417940659210441895496741349081130874491546197409641312819911528230301581693812709060248333163891676689682500345549492731203190832358684618544635164679235262730060836005520208050374789076708934336219717482583691981154229768521801063837970968092104522556971324547547402702838902247347948823167442168418725002702008817046050162914617309178266767487241689180541479392438656448427038891102284647842273700511221976748015301928271567696217362658489431494404621803229591732223771527898263618816498241640349370425928707864319745953158525239354037331097827806381190857055794551849831327944669414322141287262438821698406735971474973470060393998208901267978921380646154263457493663225224794457849049845626157047147831177526478932917353065027612750484548385993125779734289382320668861962018187077264354700994201096101472337207747640897169278268796056204689083820471567361635874207512196719437851484181160303555108935969829570439276493690629047384356188680803311786748757688789155228009103993954550708089867760375601646132351112768189664332850943189525457738438182224607874684614954268963539312392732808765908096125641022498056816159636223325239494838702800382620582298349395545329641205532202621171110251102819597051714037701495975450969180455670645319974519383211690282561155404010068098345191283110209632954147844240141447396332987953856332029603799206370265299078756861961365588117318473712273266407549576845087123829454674741739090801937395148602035729212156840963619394843642921547739621548194569398301037719277802675783751217612294734094256905906474631649581375073695818348668400763941423657478733810224882191840345799246710285480128992716575060861597830691604123720484544531337010133676955274351565977124780334859857642799202340230683273746369702685185574948803652171418948727027302291637249693050274347703531766745063541486034903288420558164742405447241364734648648751357242593893147797250514703918912157798308836425501878541346463046382899804986705874729237455066765742053159770554086145393267504464630654740162926122364085018581378061757119217287612418934315928124742761557143444996020001746495685225614870727282551928223780851512603100217335074737182653703725562274258436993732124935218147989560296044410742844349918895255297055766929264382783389143420074836383667145847479725126073195132701074952116162859734927466246385079974981985057460457558746228781616551345938445603152438115425993762111564627134180016251723579556945976575262585142938193761390267240557305243153313890936755702775764620417280453502255834626286967180470641558848141410742002395574574137228344936550843505615244383290167212070089886015677039462782745118359754067209009030180166669507273759916331099093415409598549832863101075315531997211634049181536507535061538209018208593501717134908044385698409447990794698874003548129626788367594460493759799356677121724617448397494629494473704813734951554703205437397118001436258088983266853984574402881597563473279794191773418587162199155499412390239754580518235165694252377381373193842244108718249071278299854024934502588424689445184876951024104895425424562013310161051302517354815845746177789577574118034771009619449503772714163910555059045458463266133181944149831116992875034825638470374573997269113707330184576748121786775607923392853148907688405002050784054083586137280637261010434298018788575963706413730456343906986009563099829760742725156287076238058528674074165287286081068016839561082952178279567221667752647941680938904754483344465205336003482472804056947903831070424562693657947234847051752349184052979801291705240901874890640949653344138114105190910644391965832763714352037531960230924937247271803863283274460707104074057059556722426793119991326063338648820963345873458447415197665313077424744041939485050865718278601702445253757174750206658485998830552764875611812393041342757743640121321002551586150372084509514206851589150415771414223231396552484740691201880886246511780660587265771306886234048415226750234553811047439355397476286008236145058678251918926734937869317998139161789184546207994695349986132451706089113749633817512398631512882926430259485476781274042253160056252306630711867881044970819835139132062465298079427340692890374467684482952442992647386684265969121902602190142852309155636069163289481313172119676068980928922084495204734145025303930988784510228112338753609362748786545859854517126665984469893620951403092137750123678027479377103369166233699074032611944966692407232974519583317395091798899225012732063631982822681994651948565459640992606395370568600072201391059267909707818472335888514130333949031332696381129481065750747712490918491094401334337223471492067624307453712405327563642012064315358460350258536550828875711449346249474087546731287139057321856264743958791432637431741227816656041140017311219757424167070167677322553851489345062138745594909049787322601125266368228501379620004340716614301963876388108955297941549401373178639865186206829513320734759885160049150770000981380055886166301299007998838878456171506657694091356486156286858144664683559594327080749865993449113646199012705999439488816574437357506215498003004412239271059799447854854391385276245932242424930638412738814331140932891100889978863870225829990156346158340547325919203575868483354278357258004015986032327377433324563369621399773421564552837645110809222057911892025929115279755582298717906241686172012402662254836601248845571974555889979062749989183290514117325477969912079442737047574476406027860608036189064621276801394852085834422423079253517414146236988359730467000132141985577758531314862360485693889920923117940837340886970368361795383761023651863512685619361998275651868820406640396733856397290898189737452142574030319292539446217386805529159850269499679444881294482591584394641966607092545659712358567553946343131452769104018049524125613388517155161838164267009315594857567941961015301876140231344317718495508674957727836929684725471763457767633544439711046199675414483055383732080523645303775615038492564363463611829095980644863254397743803748125470926928428988288225838710616650160972703413971123883455315511462472791462011238781039875824467805432285734148721297695031120091816789054979371138421368458403402636633115304666540889595567903721334751496342711459756365186338628532451472830089508313919266173833773664832463150913315827206718419453038808957410827072151592855801512066788667866276220079116869499420383638782897736004254229609020175730663792458495223574411697722556135587977384085583628747508786718341282146720425680626065485073957529168530080468898083155269975233791626507209303278719811349394313662981166369579566349494415997028642577974901116045336160766043484538312276609841302190880098428906355252545042359421334588216062294371802049342205379967797689571525128330303088728949205827417410064648890189983038925644879865952356227011055821460814602156776369275159080321631667335233091541567857168191567846097923264527251450092850767479704880989269709027107400421445839492572537501700209789358530903835805372551860033685684184394498183445218631639621951758594132796806169491121762420430950418063160875686735296687693900058492119607770353916566990080648483662948807741715406814647331326336000805017319207483673257022353248390743100799767445339566568313405095562532435749709915517196555360297829760994434596531984312727458725114575055991358180308064448059243277455141691321462016121555654216846955677980489504082352051600264694208267330536760582239745060405905369651533967491102051830889006982946276626681440246239899426408482757077102301155256641998510954923603829301438401058694774595610918668236392804180620383412298175419110352749440766755736630964132930442696501115528489082143674264954321067354148538855264427840349484683406711074387103204612257644991321910604073453730297781479554338187337792841783143084168227027614594079922726382933811301950441287716721434429722312715257055712766160546759887028165547389932892003041347261214285237257219396128292371727334113045695091214475643418406894740170038230924213075627835692332908878426496213615789127357469036581552417236565292685556148442356857913088798582166657601276226961182382962283793553351859407244244878587900579413192184615211128810023070857731227199439357690085301519733240641772347720015635537335961613265965821665822871152233826910007280749349440878599024784668265857150483497070530954033348541124452775119234078435914329281212574707507365843160862488491717355511474430946095499685600652329989307544592041620552637729888046533117841582154583272913714222213674580130317690657394646042953481416777248938253425380551062283421899711763811490971676623021743806060891261485575499666745805196960783140478076404958094498340246929935581795517390858793917147278804172660611858210064642432014655662993396401916035649232356152542790608266195736846914900355901303082159208224014896682611198666838232939358003141322688182290477764692029598132920449462631075120827879436282870662200297170292779308211746983615734305187027720684561664798361210225887432438365091416744947678030433818309622043948827122257239694772280298435928798085361672556557663476409292842587109629188746755061221884881590153940434520398582378773246700529734638412924038672479519372289841921224703475950128715438380497509560295520109194891119950796115743849635851557526868210136730194267991176823333603239661191002467775494330321157037814315050034993540744467650191899225873899464519846685106599121466204846471344292737210947197164210239318432888775112672976803093671841450079756427340469658111295207150798276837060920965185237295265098132030961184828121863519401081588793067370893643075896379163371474687877710733947554033371638246330471651435559611287829976076068244986132438083824433620949210199825074751859043568110089148490050237166049673812344532879368295594898239173393888094281093126964591389302570385243214575434416083466472088540045182558937652153986236902922570064305919152508241126500430989631400600889650063597073475237598266511386094879005576984599268435579877451443888034531734442567482832588392913000964036599124515697884240771458225208620231608589807703083843220480287081640766869610390678341107433570552617347090775939574873991885403407429512082985775300372231233995933395786995352345382416172584394535513259826858439605231344196762596082544901321054245506927761026968457708418289095683719815677806383235573940541167273117450580085886483835282855872687779901540973065139541483889132095988280943115200899161080435387629616663669281055430079476110442610309962053611087463908918121628884965959917280612461953823550030417952474219575629312433765048513494432496265911045144948116101323628504916041231556131844901544847676473518930618643529540083367023017858480386731457593439533509626705300734285654887662736027527719356434981958806046791260965328867198275594515950119372675967162136083756436515561685891599080738194364460718958962456790641739916419356342422673905289340427426506995254079925359852597656664965468104816879514698292236383022136776811003108989488850655556698452650158003369587761145160044871725463354247709612986177257315705868515774119609806404153758404743136152044145672812584254231364421521360833782536386619169370420450635908402336017129825576911972780699173915144798730920780065346004034232244106681058684937590855212532990413070302915267334571520970304365309303833251143088669548754772914760379553723316911420306436373842458035081094047788697401401476312451539524889251612309871764771191243531292607833642378912532081287332233388378846237501255913541920226875014854480362850588606976566412200928344577268438762098689921675950012039270597022570986746179163525337856891442213611715193232924499306223813555274097077019709848127251678456985035929796038994376456005170296364882197253356201351739032533808079607221768316658443645366408140575828958433362400261319275512748043032104114065218945202902208261386484010852159468682945852491143952107197080406738862621922624950557804560732187000295199684276016477273400511959714670173265165792438544941462881908431665824815194362242125911639785507301634597793755524472123477021054716517275553721760990786002324155944788341811257691071365496462485613622254588603535416404218997394869550928859798204837609846003895646790867838508305617407469027565077281033683916283463062794901450827379569727628553049105632639372033065788475844083405145853193291581477378423324807352678483338838842360300188247125116822190725600253690473970578538836901562601940089104916642601799586277450418746924306724392249488718727140427200332556416502001735080029318612004164135581374234314336888285263234490320209580839749349832933184071878731597129722520275448266789056477383438570248160133348030119395712438827780227762611392140553838402343051756326752089921401129415368528948666086554777489560663701468421579893796378117809231219458029530473798952752508301518201893169975150668449074156464523951922629597323389800559531649042706741936730566762153515116115981321667962780357985714031829827377743925232250122744130584318862329299823896508847027382325581453260160947602835760775743663581646704341865528532836043586135682594436026348419903267082521266199488607565112868133254687093689481204339814223517586961971072352780927425994904912166583432106716348957385094770159956222173772399492530263632616632201229644403561212513545080965663270224968147562061601051080278973532471259913651868344061792393816919910748325342925718993980617952249286266970225656440510376574276874328506810230365233154392742097706370816309468470247638896809268751319727072911569886749325276525393012373240882617565325291096116331613178885865531771755090410609602493862665298480203142900904152013466995846315155860472989982955892034109667352635265229230473586662630325364521371489286981149987382559202966548397895268443541174652083050022831954616210608891766562486998365311207004315866497617953825101926836700686235055238033378216995508747651617360777024458027051033790908694549732122625594184824980268011138220246467940878128623685394107498501346365941054318708426159448302914436813006637298966814275101442759691695109195665886819088179382544112163179721361107148089043978705601812635621683759538979752383254240615899099432196240948504322852943800223669434597257459773972436616836910163465647970816845691024789784638335807584917017308075760811567578726401319703982217564432044028448146790821165042034556663842748880310557756122398325907957357144117709987588950961268518771803071715390199379282215352385090570088385382742776312865552594341252963852558313760360410537565777689491637018416919205296624359439819615294868746874095987826263780690980760939532157385598014575348344741938675284793090667235509924652796498553313635338257107619899559493167425850422246662987700805468760851125984150017641142495838670257893764964266939264807074287651155515006416272436295192439234372283128514352877547030832943044559629249598965377477825302056396223439010820319048202018330679617028568377069356747736487156409882489633697687398865902444261613338599987607588253645350178734010444155997945925668584390413107813376810236801897800769887768387082256556906856475106292262591364006095122887660047079763772394179974131205089466103755486335236251772526156952150998683538423093507399843248826837977507658291375251038973756421163317953284280534549035938750579884460775121504454188118872248421829470017633273875218556547212834266971534797331531264204469334488747557993451092963026209013669081342827537754939187094457278059475268146527870025953423793653755304460823296413141040046350020118425515668712070098156870814177865516474005263725341839701859068358963533179633082584060773994234649126629233646241846135341880985606846561261854440009818642722976089545942631683657156671647922918588657678386930698834088885562068263078242196399311995585096213781001578263876143594699514784242019860780508017278513858046570251653036181342158487999929632108455695512388738617527956772405988427820069599886532071577137621432248226735085018007339806716526092248486298400045469399916437852459405234036926963843417709336785235446498288142732183474860363040187241823680348587171153907120135212393297606155052616436580170458743446037413768704241364819495725044856409998570106646967036237586210667313517338719912284821453738914889593905104016204758115729532554063092138980741995139133778779920440788183874815691012529419720918690521740664791864835234081240890967921850290448800129161478480041624484486604053519718778470925598890966953198774452971237782963842403657472759043629910730345545703203913433341434419729493147463627296111670804337495884608696133303591343956090652809982131355774001283385410980985905624113156500521472890360718433711253757743821616756178142874316022885278354183257347434103696094650132909048333861203110447052214816929313654258763796675655962747311516349293063332156874883843383320950995734896773932484107600796593682610582017816855898888944161361319304606738786778220289791388788545418140748314830346598412065240725559060198288056777084081040208951801903184570728466596209758931524951035148987937178479842640433975121766512440559894217759295607822108267248796921789467013667917252172480907013895281595814597215946200875163750731769148993869850708729162726280749525261780858023077893852597783661699255068307483847673430229922647344990367315847300117809476887361467073654747339718550826373848106727184357255759388854697977440386559702022698443178701671392062015563320141958742359419609179036309993595577734305675816630440050574594250336890386135091589297368719746453119449601573897204167235005330888870712534839933572215157849258983659127493988012734281031690456223643269525397225062828437014181512932777491373421156990571202246241128285932697326829642861714547229515218537038842024487258285129292589185677657255122740464341361594370081369337641851856223544160219168660456520897906317229656172519599445246690278331265025457122801888784377074485082216571940234902342102996129053878707863577239599744279411167363819950999043331000507285291984317299727980504431151631648122773652200072138959328559730653508065849129642880307157504439929210872567683487216831743383240843111355533064708554369133092970927191755762181976758385483372078826814699076525267993480314528998874738866307963497172076309546238759512717588919243670611267425852670210795288198518574809258513673030955249247656543210284329692542345155467240278317041609515213087272823312436047401636773701866606902020430840282761671151469651815568063543107173808089889849296544280990975332165437446233250646157984530233539606530803686301975772659588563570915274974794857745730910123023066922067607548762755921741390535335986443276263023215734810793355444662753297270332637835629910217355600663046744401268133607145335248572339289601501182970083034919297137912690943313921283355587578116877169258933044928562068232388863162393245262638619278199953457277253856992836763450042097811292870279839397574550091115672778747480130256996790615848673664349677611353075288317235486543215207408440572109316714932142193928701141954885035389510584631677482755244219672441381007237941031002225943439777852678540821091355650342129481115087589721476617784271803001550136425487466252398809962294338288990790787232319645522121760896731668282123222255660531352453173919809053393690209996014017293689205469024742521486913020441880156974330155138267927085198116698440935332483067536688552272155197054826775320690127531782854658937136343303361680159482997464505470967278188420627853225721861007809296074925752220448106862966489842274983449208352374071037231936152744007828523826062443399949630897661956801282532652801837891476092960304891431271607944392867112836410615518095444109688276259286712291172223888645632459883394204283746899410258813495827964694112195296951413431231505385886180949388405562389872765990406554855432269647740914863790885495170738055850227298228480718207207757229494735082534304629646045119403763085662597037652084070042133022321368651826731644210322917342665169805281164961992725084694642698677509912758317490241499633509181748656338550762801489694084340276211760045307200288445055150152123000092496237503395487561831564714744418233672353938057267279232571540020212004232113437576409517240453798686886334931749246454736503474949320280939457839966400690229930627230437330332178473135098991934087543923098067583226251979221656733519741122357756272102240977395539633874703138889001758516431806887007564137889875577069127765042876027837563340699918264125182628416531368429238716444476810808164463629253780557087211102008544154235008119847178402104129422062830665757118069676561789070104923526660226507759430664219869115842495860054563574532249469442501473609664003238430933820672280670761608386521085463163138049948252410793688537927128195045402329822353023264323789495518072254773067181466789679078782002040368826243528092531297160867005959000557582515046926837363740411583236134668128147076397948491952506823144918320007118910243280440473520067206809466923156694013380812491199899700846023489855760524157276899823901567898865611447420652286920911373977681645476322743504292673197214901771360693706961066702134457197667327145178917250619911053128280009006779441204770193771487368079234618646422586298487528156193596148701824473464782939357779466791147721273508721903997965967359462957024209592569106311336876192611386923089738495799522795666665416357275888355816368717948920741358177886400956423480240351784217690403600099285146439166771430989166275726690055343361838657468358695919308307856547233869564276322409902106601249343494851581044281125567792584716403543309985012053522037649760238836382528366692537228258002499572582847626994455714126047042343830716674342907480784311543227961158408409147327659841369804440812237348457313657623760905164753342488487842230985903535365209660731852563449739577472091046203536080828334701946307926814726637241404220408958546827542520581180871640125238190051456669668677123715701996326490763641066553136516670494377914617155024294294390871115588808697237727934774076246672899382819948147721095550316510216344690479040131526963715463378159959895145740914827623493521422284299718684803690041377206840972559152470053286126286935136765548812571157368616924777183132847982801448013406678582539607271752793552547586412782425809997561652074296288155425083878546717396331246258165160963024944574505780377396516744885697450315057974577065958986271671384895111304487071226847666639318422604742635530678812707394708825092374530297091327838429272981642638567626870660960823436284058856267397456529235785212152063679376653587492127141106280652575336219596788890558765224901718835696264999324839956044098987217069648848043750022884639808878106379233731698287574799612976653373293823815772007648230244413064388860799239975789814477264432564310074843729414127468853977152932888514052034453619646781977384454354718081389512167769230390417599960669158163005600503431585122972783405440790631501472088820908473873418770825214301356417639090033341305822594569391272102529128405896120845461203142041068944775123255604325918893549759665824536980762324017285540115785607025028598147943703200120938082057795835707494841218751743947982160891771170726321979239069606047350335733517313148375983080475357600868830042729599813152447683342436766994504670946739688395403904908777928626518369438437630929424915642665202621943958310178509224477670859717011181640276428531913884116691505633128794632869918389790870556315306386902588197308804386234575257824946144863935883398021568524114087223938892051725162164210921873092677961466533114263683183145724010671140224859637908526828497780790958893800814264252995419360952222873827249905110769326477476853298419601152716853681342399491916586070870962998242532195324109171000015048644454751689933292739426172500196649070090117106830031991468615696399794454711172523074501831993148163021955366815362251315867115436918682139081678279234062681085904274440823776252288726633540665476372881135188000882086241266597294041012005960911772804083703572647751471051456829309539917823054176816381176467311446566331605128512173706228368196992532378608629730044773583927021887181724361377226016849481315590064252529414615132999464701813242045562711585638531837248134376647407614697632253858228356577758315557622143773801817687323236483918555519720407144386967412550237491523437963046524813963440539002645997171841610535576935338748759122928781591657015319613638745916813600827908533934318245760629162101356085989625303631777448430674911705105163464532827221779584564333410746819633079023612876702781403018581649886708488418830661233123326434956992625183083257817607419298925623137866151149466542544283015989482635449460286239428217299754637834991037942807294675453235778105636795223981973566848561451021337791006348935647793190439667090415639888665560384067368626308359613432435399391499853006430136648702634013666317917552542067332786152841421410699030969896843041494768129108582273870852431635123232449917789249936770980601481701476064380575583232059339636651741590725656494087888869420292813468942619830675891296382963610921699322471743747717359359154101553256883711637928531439065335979259579627390030207311536113324106779309452064442468156797517284399537444749925182546220077193424969067051110888979459162153133978161281803165218853502534991567268965064130825775011319198809729575753815942806267392182843877307162224310913839128530420024077548307984222078007013127228971199221732084345741274827908782516521677601843123308026973537114985821582958349854389381292706109662850944070297587388760155903853659930767792672859370302849559692470372656594946206668778900620203960898297490354412313132705271472264661598141297985223556248577403835211271528461400428227599758615936607593545688579707635216409708054590001241436645227573030036987072854731820537072566775878643022966496362381476118195607773330047112015087656390589890948009995894317897587716514175307716525926071104366778689901515875255160769514266829630637395009297717082125986822082403629020586552048587999851608345467697858211223797475623762931473195054333160219501877009742816720052031793787203141423770835693104527307803101919884810742751865936466977092138007886970532686198471258015505279120321842753337161436231097102166651651234011347591351780951474257102052819972445449260486468310272313063726261661174799858768811821038503316057464669636733723609459179357650619062769801711748972495767133633668050550796339933777863594039132008071789135831815027764934973044786735022005361485257537384738034790462149610884005680830776005518674126842973018704737386990554679332439029080383831895879512948641462661328028131227095000276062864717868691919502057446934805447270233305837253686616971217074697771752910146108235016893720124765846153906262904175072701897062570996169261794380074335148125858433618788544270926274490847611402097747316630754177425916130155749073919661124806986075349797087364838787946104711153837897688633127959144638385844513620025839020095479046368108184338369987222865853746157643936194417183798704029966794034536419541880670585303630773576967690618101888651078848923145953648311883822227272154780718987513389004585234106081078609404552434554757539431612699991958791766737207212783651869424348546639439233532223525164345774738782753660125871542546988775939652428193733652783566093226132134010865535575997541703992206712271607973080690240354066035296024962352113566980457727902626671544506514023366510176016672847617986596700685930135773109572751380954539141145636236161043682746755671990538899749072281353610994046753519360997969247204604980634104540209330246067808420530763953994211613689080501794493669822438104971806956908651421598440266465748580699567649333084794405344865610557662469670935657483007159217626339217974557020846300708948472437297381529300723987561990206695302701403613566574375948604285465090921408672969808711514073943915177730830136838804443463943282220155321130368889321505240615577153342033349656583824728120930046244223493512422218225059441632031078789334307749752887724447111145996427743810969047304161472512029496453487974288553373004946904861423711576647179114654485486497339993444555426700271888545378165633864397164828862411644651973416078879464110991597183456123974050657016673538284160249097551722873268728284105740770616342885344089015119558298797351756971399408509980154723565540898707360796741413338175430054120203683194969981830299531227320321592679872244686773698512549344909841066022803989222666410942254243616736612228530102654289739427036688457088823505327154767938365385616089079677712338495547369421370449856524532105422004556249128010597528780386324753228889752747984217473360431756862056812001448035822054391311060131030496271349729534236601742687553077219679113033195615282753953900312669341748045744188401650886494933711057211892068141121576261102273207013936368935804883853355884821502122648083116186822467477092844399091556803520734033873373131547060345249230919636501106488572426302397737260500636650245245307851253083459816550648924571346553040770456143844116069581602607059550769081234879496074673719925829980746117504726562317525815273847880838371955883325385563962709633507805635351272241999623514436682614462040677925468115235649005201457509178648956390142248738451207219936372481054621623916760479907702993070281062616409331021932257283065676997835494002333384231446524850648518511481967595421267318394086884776671240408709860453440092490322136740949124418288565959107635859308083200875469925912041780950750977279770926619902634464874132718687426605302889612651686203485430025893133171354186421992295402012528026350627801485596598957710061337745484130662883952314833912204887073312191100929913719640129465405642606712918588131988667020275682343145441461473472721701043820182381923842626750140632564408533632625939215173579107883721889214242942577788440937340222064892529337459338124784710757737081508410721043754028973577530899677248448212164154734186996302720915354661850963982301941660913187053108227695287458777745679697818548002346960510843382813792921883807200795746284689741135859675456277545404034386657006561957346934082571390414302173376695391446545077120453662513979595534581476730100288498693978488474099772321747567407643601798041564552360493451914756712784981248831574583818232556991075985392510372070221819118741138694332766409153978390444750205346968517338331046217498317042500136735093454037169268633663575565654376886692705698923144040404779104655278523265464436922317688080693454017721776335726190176428564167861452679203009816158631134963299172416272285956962268372719025368451060902659456694800041098994230999755526202954059791156584720801808937322847239892021816486968943356968807246380457950981290010940132079069418456994996888906740706366186869583873027343799327447127518523533673939309047113101960857016136451819601774449197118802335858751469652952831063763601223523718473710794604862764021598233714990846412155473317187176764955257280659427735787952462815442897379866897778476225573288763442607918275736007698490130007334643285433709208623488163792604717082988253261545097434763180812695978333330737449907507432802918275216664280039247848453444629891489767071938012196787757363629994758466553900954322553151669134564307510281104519091615289342024297440082990455925536122112135888190202471839981387066734799089195352041198670676525099628999445874321377713823595060967534582018966406433307686925011540572225391683621222250883575275118073351599476990853837103719768466618283716416310088444886570888365508120249715341786276948805142369701936799878711058239838656056666974167418778928674344382851800665836087660770852272642589476870233381691823714070320461757417281881653748651489991907900659779025538102728265232896772573298466757755515137826498951669289930620947198197234586332914645760330155654959288335221431848960698255660844933348038424905816459883914809165196384170936233385130988562810878915547130186007860710439177331809116310342819770991858005672856737761031930969098793686856752996474727268649289396203170430300296203100467533375536834795479540632366936868425123236384579917966464072149238261705783010932457459465618068602218562789633444895929924776560219764110116864208675730735688062466118302507357543749805588180978928584683993974887330521079519633734219298471096053517293330034495738648933759032735234054383343531843563857998185192373493200749547369508457846716450782670299089554826888787414891873878817864049104438177136054079873636140699680072778779329447034670621962337921017726275922661633247399240645707142700154958247665943282529701299688348749028413157342889229280814921655271377026967519058400611346953947122477319574327685189026733052209863788046367196196765620109792937333615570779177277118719088827213466576140267755836598693108190670298541583146163392481797010555880086631874051917333326800891869135944436748092744874715236733128874745888323306328492686913642794245211403401477987238471271795421676061288389940648157113354554718351204522304041865048113815907855543224283037212313796084324288931440423186754358756864626368882682488521923128543173722857937979466368012486933826950533248008981441211304347955008238382740026245474940645626293848177867640080654284684479904570144692979207824210098149246536204813581828883031496916539701662058874407325481065667019976506329287346444422520580033959401160592210746994963064428896092271731130880244890029509198598484241583109311905745986289590615105368372145385839610208268831118322275097363996162649379051230807209027661634790811877915452952598964499688617483166930889211274928629866894946003045336906214450341303724014103761061765059780425027908826612226445823095821105069578496865371725192090876641954690542218183094530295765240866028816144313403537334892215113289152794126196945484760840104945430321198173900191973365329502584275174518722307976003061692917943120307614991490794958405895143681761888824038677702170781680587993288823125220417703450774645716475655382475258747259520206222183580467365510175404519078848444042030539631477024538048345022832898718089484355940105281407281567359305437176424581405797581758196368593020342916089670712759773764678520423602240902388383385555977417480107211138171427492073404262812323461065764261817929953528334233675439786083839545314485203078915134092704419727953558475159225924708857329229923917417741106876230686817210947770676441288984143908313514024350510230272528725364068663560028815113544428833203691519631307102277606021884725870807469527068987454920423290250724141708275986456888655682827738214846043720646314024621999537072577758885270691193558181728918101038752717629622765306461246847938827697833332895197313418367712581181416239389246945827939539626792237750663424292143785287116406774844079592674249928070823389100146913322728266519523602326339770374848241332318893790900924727029518693859628235195059784317879613901450128575226228044461004390996865203681608574882086278328903094190225230609393903485959173792129126401268156951902583217542084619996860946424542867497563256958497956793141398354604139343572088686846149285336084807991434333888187724836260882832327647637087789262834330390131028554705672725521634202376457233168517662946032420243051719568109842822119979209605677574580210278494073885397682751007668245947161469133151780145779109346263216822878581260310928379159686125481792484029395116290105136127832708068068368114034222774530761941303484545569793162532152362595659204149109695311384266736039103258527129795851587502824573182644844413967809432385822398843658776235113120627586468489633386547795418078341356964000958228571612597346148590924764659680613206059507639121733215882973093110137992773077793621788520361821795739687545133859391892527972661128631269245588052368441315831434841636793182163907641679468669251778067804082164430991145922754410684168411524933473236012071804258331767144300674151372754380473326860309885671683276164641673543712350883971927264496790874400129451912351292911167534176252993000591800630322173137854769039406330020959758316892069971066421586378447878619212478186739748832404211499213329774521612175995925376255469229051661849805578230111307910746762143784749417376663792398772284098556598604186647045011407616685044023337372684921616701452042084549336131514045136202333660552638703964337882375376430221889717522147270744153467790572432444014578341140877773517022610016796421121857344012482104623558777373821107376070594204181397679726882474120509966738125819450124841901918738059887084104286144867638755641208100648549394913059137887064428150837504887398093221284265980932904083523879600912419352415589006216317232353284505648935566427052348170287915932443409425891985272391309435068611628354463912940859173159718086079066018490169089504225664883527428893752254592463475236803535955003495873037863932691028243472141887125340566537598421587466319051645344356828277899713609803959194734300517637998140430557992134706676445071616956694381247695947426019583263781510746712844647711465766735977768857167185190186495374254049217849677035825140791565638426917073238682595479092530903040700184450380004433904726343216839683609706017622745935489326068904497178255570549579561134808718885356653863337620963157787626807886604997305068720463825442963845755792489230265336563993740159105705109500788597361795565846201185976303768361907144041338490869364204287477513208122164794420800474807289459649305082571327862812903024658122312002187731965980598759438611966833257278727665612478206584158814253836283875540349611845716151413636898097875832861762432729935729415883739836637455883818212675412704061176171889654417849688429121673716587168964494081749223773599860718757715229132495849084339779093287315739200725938133757742147185097713439680481246146925930968795291172198568398243812355797034782246042922673647218824520399864531070011851906299675634119627169518776517584321585131712179586883900260203405022780303053221876541705768183417317556764512672412633000722571070383486381357378171903542917421390115506824701776527882573237934481238467942866515747520563522687680072183590120958295426162346607580405980382398356064231889717023751369773175773566178261135321279926011727241910884963426012426181305978873832530032418755309140559656010663231170259792562607686166252934325646476120572453603616403937884975220696361505612478497815493668013912490760665966371045962687016611768131988999447673026186875050710740830903368742930870167473950280434598296732013183305278780247944817203133054629184996896780393243138870388375860918892198047387637436949066883828616954164858502525024742780230029086866666639401165630870590753640650748752507478482790224624621007911798698496590089221265832501059317814503779117251314794333526680138772918612072976212902217532476165026512990992821195632323560900744083714145030113537286291504017901853263305417516480149563532732744227929301470548372183375779125030737984576681887116517458286861823561852788295902132876186304720107610103452347232421428075137724693419585574981091297225294521689258047769090261143004942520665975075429351999114149778535381840962100564515539215108518829842789203719746860328225633146496788449011684620782361691685777565295299099158625725744718358244902863688079875166069946791398919395727017862280134450038461119411937456050945525121043312866388143333192251167993698183632843521298852791860244999485125335810865600571933217347367645517194388425925270541107020811999124080097861375116241317812761240935028571151772696003393164232314446408139907972819763900701184045697290576224985373491028042885795524297325042311818708918474645539240851768320941770967501099908950716788593902695414417033977000180500195071525914448963804567160986975510553446545349894815342579112039188152461171516579440382244127017363245860595951488817955328421675055035381801365433767157073091174959295549195622579899243252892148107897188983330349750420582415417479681990952256647089503514198754606973036675276743025144432921657073863944841375008265199322054698277759807323688159436086607601423546335624767708252822952417392291388022669792993581920638398960230648373616940641774171273763833218386302064151811852137201804336619289258420479297769533055795011554663387430878729033024136438731023645832418398677825779621954413691970348182311402585255284006243605935465087494594941943981142582429148311098622045396141101975469943650132629398065403092677792774679989766173871892485592097747959352616960910740729373202483643817720188650697366222953886791142273878252156407813631602928195716300044437337167833842838392264830801205156339098406052160229768425731160763798652946397709841525437637389775670580327828502500283189596700016695356159736610083340955039964779582100547299491007315438580239602384831846193210584953695137630032267320685726452726433148076273500793706399443837487728923913033877022968106121737306948231355411421317059046262940090343710457921936739425472238951940287342558479043291021561412365769349620619392587353741453384513931162434033850811307244078670139349284851268778973039094078428676478527167431828499560511892949938719589882148496057549415558273111540324219431200562880106313790446850781811246391824899295383859785485977782844307650171466072168555733560501462283930195750768251565012880041903111860361627154780189694801842524127559878331200633328475210112744006038698045732666195304052846009997800699238225476280346608005337330448504295331911180880851916647349319492299057264210680973616397567187611648992712300799693018278857152257508409847107954506500135393229015707809464096239772494403582458035289021364302191259654788881410469851927839325250268658235522431039029083451270005801690356139738331696483183676856438416887619094663150074630638889179161644579742835937411794541648594566757610242129906056505729948669807957218120285378838366624648658229353896032982742508060878063571863635382053626976759575045586133321689707800712597195133290413918680332143330278060943932167231583141427470219074422151877644189510701425474225775557541534431814339405273091420534466462254323546085957833656431683822098833972923998348102312678743915581241114800597477369271937507243055573437628657898818993520723925820522585886768010496380245491188387383780113199510281886117386807274922800653789290572594728549612083530757700455770377171891568589015784112104846589871035285051955417645070169147649610778308235526092360211031532769521869735802780228839195160072521119682413008308485552424615002532444958542904908947074495689619083308430099091784291477625775531226978385997981845583267753538089384302961452070996750269652866319236463446050807077821821582162743433308661794597987489586196370499170926421123806414169492345216729746336333068722303570938713494824014090522781093388242542414020951735891041025069936258322718054951740142809444263021490237463079414750160778299186061971672198838975184569486479008016299447599328686018220605606238713181952924157788877599191069379268582468762143467551392204516550124025286983530577240570429679751978341772645537337123452775501609946375027888176963694103080351288777635629906387287024699455069834753606320880803604778579380086554084618289510982538959515963202647315231232410646593250935206881146464381517399250968318994155060847596886914444635865998721026210574682723582458620004967342920308136336031562266587315840456787710877898864790132898282601360112798703952493550756956175250708440598796329067154140519848728238076274227014770048469154101477817829247387043589341761203146748919747283170763026469284487082098189087683246998394926497264984268809477705645919801688804901886654315176622005993385575177277056854533802170317908978847164392892225535597030119129994075689040926941613809311926569898611146881169409511494667565667904609033282721526252273385680633291554343007542368183041954729828166893206472129368688009429889214278012291055775052273141688897767924235535613925438303671916169013426142571722094920352151800558665405098395392844187133670355573467964431961597581084686198440793786962254861847911516972263740956095722485613903110558856727272865759203398538766229626440955617897317173099397221694843756950468841810605211743167947747612105006055917973283243111894584306984236479573442402911728975489590227993687290464003111472691429609161169161923098525746578247463889252660405807245920955022866278339388391743519794347054751112521437653717201282306649366843632596867144517583720060393206337527692669084915571154822408360515488990210019293720022381475160681618140963791757641639603665403096413211904130409779652665609098899818717158209146889114888537092568129042732705131314120072102373350870129328326083429142418417906051306867175017746913693661310051400766488746795232004060063046756853229757128366387306377451403068816952499470311341327843003289625640667815603449757107970559285912208175218459392581762397883086962106771441695373053581100133858900799847940810639827657321520380115299256687543115712082724674512394880554777152847594068563971008882911949221535091011066761285792256271744601648741331929144624122648077666589623334964978022393089849380000222197264484034392928081793719581601987198306268601209297851255909351311993490071820430537041976993689975607767624217333726833331185963926731235045367238854669151879297061372480695822419462738835086760767489251789186875461304540967230144467860541122783782554095972099246589104691124362918320103857308280848824633362956568458983524356433793969604103648954029729022437359095187028504992943872664127644292204001782236111124254855276552866196090974576932071006585522192990198017029302684821275130132409383336855833529570288819385719529502908427112942353143387500783734951145496573166070759772849265901373547888883544868141831922740345284345144753015185889514269602801654561698089107646980613905542293931051063533840832547740865292288400582409289182007657095270230967950885554823946473162514173355013779456360084877306778070070991424358268292417162988556540609342006758370190595750208050922873914151860967626277297538028026610099584384785908627266437216428771764278761389056744553130193324091996978017257954566383571216464689807875244927211391501032528309602173476532137424070583346980624012961926910666024173589531259137204310875197411850138806156444115107227241227054975404777766847017853421253208719404209980105180608841855459845702508114510539652965633942255691658945929497544535918104119591961561842246365019511289045958067085961413339653862693280157721761631259868870718012513754179590385586233133854621892075136299758250960864397234706628375912553616743880201964522344853616061264436376677844381570051059061625254081221953483205636401473389508009987102287267958262196368909469376792274312414404475934420283704322199171672211281564166226722425796865362937514354383704357201610690347637179534205908505590140572814614014419990336002239667636911336346190744998082253521641096241547155339347133045348029413342744974716705873845293029766469140441959568966862515006484521791061255354644434213413956135357470835208528307046949917121292934876732221036474839864320377637499079420732811427545311069634943475327926136585603300144271040390326226992436709273776873838850544159042818275159040785527674163031140128425145775271659591209534444609674421115394121653264795642771298910849304705200938387328004541349550129055404271897450564531940112696290253889369081487893291746421490016872086191160457859918397898794153605460315900696252408739336071008903743397961623825813387816125903134984228743045288360040389017594403911050087566718235369742173914182538197545219389626830693147794521820029513327455616653887405659245584583272016723844243392714590289066484063649727455359660126660134728812893836050047210021878125307065749047785333912253926312101987489910907938344186495106873790672852628021104282705513248797015377300402893482272581989942636993444986748774603566215077781829536688529641581176156520679669239218097168869307240332861367055852260873947852665296345042674058942910561742604028333855509094566619949413113887649424800864705133339041789277151411777719920726976190147564462254654728939878477321856247310649037851209739909077799431146041329538209620065096089912828662061186919603258122918510119128507973637960346386204760895265053819584317086454040026666918721579566291439021993592520972826095338266354346378235504488832291396757943877703994036562053240804493374791251152800488490680025478260602396413877724777485093544012039220836350156376373467496094869735241719771785874716406565360605056520951121983200493957424981987635349215930904374988134366754147410960604668257840519076566820896905351584304210855823364290917914111820450916380424251847570236092955750135115002097003491333789536282000739849748014400691945555740064062508232406693056836603311729501550026294258161479744115688895268642689146657429856459128826896794714739572441884985964591672039089582201126358988313605534792932339266505980820447906059390496407116085215238913306583654075970957836230256859307783278853563311144330642967733585371918706728016911416457730131550834118977170037391990754227087125112053084468423044084571098371783417328838517928624446077057492706430420565507931413000112630472418074162739522805956013854461950159197553724707426555168452323485982424317725924928492320605493585795209129335760986970510100363575284322791240960600287364889821460012057450123760467128566782987022753640262456890070752211148557003483018260063444132891030679632595395480249716771963858734427094193316190969881765526999029038716578545544960984877165583414563802833570608579702337417112418834342508549127259186764798059587936270525186723648381709105485642367558010739535332439711608727448647324971805397402573110302962309815571450635853544887717914403425195871864705207909344298545381260654850812699339388236263694424566507474197542099947463225965977944964665330242224552789250085452973843256261440898922549710332403672291791369683471426807134204861252401641491636882609635345151227409026839756650456257362953154019343076220505645659313940403399078524678646701860726267354116781363916989079843121028797455913014061056333530364794681733300533252494694342013296427218381671574319692936947656924162543021360040297144330905956870140914297898435097195058708338232671845321847349075051983303021616304650922368700341329189874206933537051657225226882531717546463986038973922961195228490553697977316856185206524656192871599434369853263948082856681601481501212139625551463275309364757865137108308221606757217387423850609040591564768351946945835400861108939695094128062024262082857293469490473955994822085379104276435882267473729043329195348418440368654355178775495191193721597920014077752045388523222486138752002658585727407161532221451765212569544339551729731464629434432806104873764272486602176322794617700559263474763597026438652956140966082797263769348267789686426589495075140280666915431304076076895901032594298738736403713057414708024880245276067085616217874753212789021267151509553704630960710638190039605135648479179999438140797256242831739818881027752919097498182984249284395295677182080980238672699281001343860769999070009284732708966300073042934716920743804739814036425796657543516883654600270806335015344309525378603021281045100039271244879752126686675286140107175483696311328346402923332787896177767177552820308997606684508764363991290068447006708054820446839558165762693020669281004462780403008868207417519320261937373758773945439936813063334195579628057247760703905878364630953230645236911066258661871264347970027133290263282496813790741101990093065643996442064312353181815893339462677268498963286515359945413442901106591379875119431596543474587356436590150068426993408991521883601412934114852700323678403614228115967535177933362631566706393181728402930425647677747767164816296990811012581794439352261401587107159543481785243547673659834050919923112514354435463918827225109250526700650202658779282525078683132385812783527532823948084453567312045354384273853855182673247674167724296988441020092828015081073369597532596311278863065857937508849147645845947062583083532161288850592812090941325035599627018299275698761567999598631832621581334802570266890013069139448671855923304814117161255355790525050529296932041534240470676460291278746967541262671034584509429963358522441592330462629308555492715659655564770698174022199002897660163895372695449312653395542939350191406573144384240541490266215132753546285932028622364328664597256158589491063333846515188507367145931802679255248185203786226860348032998730679700252918668201236500347805226253158589458155785647582184345410300451954943016183520982555280928952262997501334685132716415215833007459633997652478282568912011120117444691810543387287651791402276600144202829131756641472914378231087241994407556446314005822807572213281608017732945880641449221083190206833337134866743357258667907960211972952556008738170545945736449494153834623970270728169905738430322089733494850732827254204764925475777898432711158084140814669879089849168182968407509452529181920457814337412959728874106953536237102438527473675625540335404664787105614501173568784934840216919862991319816475559293461943704707117014733349974038224639668815575160344958219875776638587142235440443440124771703087210496479059458444830803901409228201847283141194591760930259705072484923963800098994434807271071184603716218142978222443288910552391706594559972523342279182594331648325791628448200530687693403605311316816197115152178614355885027054484639531973144381435505618871803038503129894974886797306174359913350524657882121154941025463910060811176536846562700865215460457177922050475560779555295938019835211706166626966970952915044425786443850795127116979760383616963583099654209172333210539984575457660916888674467290152119207770824412644491162256874080413631947384102322689256345730940003494101858574648893744006480026878573559412726440027593237259472920772519911739181423152950401139765100025170234305803203297583784476187881814560335798335519164603539411765366581760010063948048964427417454031820091559190882222824541132201717196626627297268545920786208672305203955552132859422757786374561765177772169454963770989804989061795192332774488352168832038938506768610781664492379666880280190156175477954705006403543542595027295010082903086048199874355774856608891318534000870022028168438735347103425644679575250903280949789035429041464850757886765139598880954765304055113254946850388777841437476578260047799612135223081785821590698889253758262702343231161874002279794762583307652101140425584344689023277975596018684415055244183737832296071735350834607789862295193608893076118344741697667251308290737796223212836095903602553016155794695536888426732421845811290743597517252225526367787953838299083551705586363718129260178680086559738704242395987419492408594144721668632397080681212848809078708469199980587443666680979787281016410601322314490940365461153976684503867353093502756989705619826010756382608995760199021914608160165272472508092113475247951180193940100798528887684803262039897974985469265079934343421472283021916351592574110985691715055865718750700679405777845610141903917365353211313372783979967785330974032483508736390512566039113938142486743867380238917365272639146881811793798097648167450335582647301412108047427149171400946796445967646728582891176097672840021926140680821063255687186337483827618979208538713154794437296704160799486226293186626094672622834949811562464866987557214065639111749499781009802340481045156780356997147155690837462595404141627094394066911124081570416254638556924808438986786107484931955973479119707959227852824685534902092085248618257737138296909360571244457684710258702412995082011926555081840332914491075612360204692681818887810409079875106846902089421045983387987853414003101065703134577280843642375940833117869685509175333179319096353270201504382923615669677062150578967283501305073421974082341716144775992983871210333026574161074259497401050395748894856766974160541780493503351946107570970090056564110826990706208039332195878863151142121630779022572871967794783161756779492370417351304853234667000314907359817068257448864257124059773483792102679178208253104787778294568666732187965295559790203146563434243067759575546725789682969897332083693008997497412932873639927595983810802201522610003032740910380886492158357762729907024749569721496366093394489441977656718460430672823614254919725286133963840425874557098809270376965480805449341688464445677941557196263506984789555439884422222444444515974909042350119052452307473937065542469416018814011151326206502276357022831399211118068730267205845807819405501708439905302954082905901381064783280218521837744904217393857635652249988878336253035369106248093005224391536647334846758523670372452235549825152825583304069800843212071615761267817777620793531820630797083766636726400364593915026452249339749236098848376904856286365950385204247178623666695444682282310911059064918549499892111442315541614985839314919372968430742065962430115907691803098647093548901522379434128182677311984476807728120099713371218231567291513174553136738968409783020153245925938461240425545704555308754053387770842453695113593019266666406322405592973479274146878207449426559236212347064007467474631603032622542646338229355551530150888088373009943159090033949218606516834699542585021669665839247182404941505842637706237568439975057153521178301685542132422309240197934116563160123757848869970414124152379149818296703253664572543410894789252514740770267102180858519267961245626195202589844706917835267488986649744676504402731476775033527691568709116852558619793014832986672537700148041323521813152223667633676921778667893708373593957341833578570851192008005096336642265500145921416635746741877726918426932720605290726078543349336784480535575485150322732047136465097123899229841251101969434332310604960420423387699440537757866726428131996599132421330301221022978767536264109455228254543072370600658359654756449840243763735735581137160389008315739054495230482442854051092681939377985564428673608754900176951198176326518563874989001857680112886940627824374567918645192260322306636024784306822047862295529739401920475297408574240038361470100137688522443963991244925494058913951781710040950361551312506826308452130381955447506997635996290165786378225758145790365273595300417623817004483002329950139225772871747141782073918367939011488204562930747571741632339689070392242537890654759177188818659571058152216189315548246657781673279166256140014565352820519241070940499385114135242042391811362224205697037713496524802469583454287673048933766442527599194628286528479898484980706015329468416307692899346401652566206915527383067407158679315509569141453294903053735004815665010446095217799643825345703839551353594730396488507389208109726389458428786405590575843554070108395837436111335007469090941026259222228304912830512313506413326805673674942889073119749183432759045155573400285316353937320078282434382020300517320493742686428266156485117061634400406746112214997725060333257341075248448191017950780331454856640045098362408181301041246273601197483818563023759739918829753386468276424176359986700336353182174726332556032444111112205195151162975248623209138634082981711162415588463985881831272430017565166841418211392819145984587566155458730199922990968748306262442809692858203620876605764142948460858763869105545957189696191976639126250672407427318763711360303956699167293915796391277714289195764744424028972484826493797607804762367432514099475773777276108145231982132755533187482142508008339383494285359292498163012052138073649532260817856657810669890463699935221906042749464337561201873364526135391228473607324956340934756227097204893208686969637481667398498793422489683653314930726158189841589425066838347804024927128668643571663571298441433679272551847690042717780042212159492593735796509118934874241476319852650848531732549787190682991610781684650379250010271264822451029142877417638442515859886262723264058452529636153784429718831040445639943190962117075249824270374033517399382455768123653482022997760829496235998972358973693650209339224497256971274374230925841972636691136726802058348904701330986636984416439839593561431493406061189900831480334810587333451905343053092830365503012775702333787928099196736715921569651827483129193522658864893793107412877349546665609204033279333837312958532299564701112818447479497595981740376913070306943088854458383459499975273247223468499609084729399512388956735886156900854020165631088146232625940400293449186017973256310864214186362841514103932068297110491699475082955666144960930219885155976561269326434883688500551094885787791901353208441382000761997539768171049820209024991888883990914717871337352916608095894417626307783044180734525122292937541446065914282397891416376505571562338935210663225711330310898618300791839677208203609908618927014369940988231630270254951227525201018321979974919596032362765548173451051613074549886796401210611394243408377158435988016416092417713403719541786698471259003025457202712636968569564238602773066679590987866996958717706501007196163649241720716893187314603850295638377909768052162986971741699791883904109118692088267344290164623658777133361339715405924777524157599242331176108369853018693474724333823364123303303643262365453782154928349293045279693872712148029748758848190710543571422005241992606082584664337746871237650120874537915432455011549887264728876024315528380682465017259112595939707197320852346517996456055805289885684365737552398783548007477170275954767781759903930953491983378071576029857020921800759210084893463671458843612777455742182479912980792314380135687088106644648642191300783525156474599227632994005056106717921762267417109330764584862415906199768067644367092197852206923897933407036203383656142259152169165790944859265001298559015661991473392691073022875391662874508426903910603651251319755981324121815998364978648986402310512753484484534476545218339829748767396758033924716772612630262564339556331214516235872445603179964295011441172694210496492548036662374724499090120615679883046139855604323897363730339027533407935165833891495364293971208458003596096698154077909512910036890165953459004889025346266150870526256254405286766801478598174689401849453749728730278368998061306385970870316446110473439703918315461404515458852683086550716829808897577235551431533148163074348966698793867003948646648226100897291289811292931734238898716202623788064062884451097582143687886849835664970878143832813911815464271172346090076390531179270050079678918254242270344520457371435258952365677330100678869315737281057228299434780568134609910421643716834546155638120888990055921459027784285178608986330603627172681852054047289101592925561552764067191202960139474188530235813764278331933189893025781463749569792000866229929291122576031343174332717077791814325437684295204626770796246184161211164264105845740713608304807188938677255906368261496467344871665239470320765502265466568211406037850384063831117661811233098702971094750328889363423178557869384618867438087914869264488261167969807456037524277466286512912411954473189870359933933683702934367335900106391759689288318545822485770081387228699428812041540512597097180780572050260872583179563745290533409408062324444645109518880958863406498700302509079565604737175153440387168385421285445070057844897920396014313193587571130241708131679328372837678433606666131241638609751205414053257139379693701551062285428218884904306173869797026244510195312731417182704040164413469169422595130018639733347330332888812333448545619111396764926400080150375990925473071773987497585680717184209233924583453311896259068014558945638505955264083416305934373913379284879145120867823265429406239844030148565704079145170511795732195412535438514470598955701468690210626925484911318801592146037399571742343038806413612801240190368608218111718308966837650068279592822963753157137913397402072392864569669948629217106828288970835664613622442619073113347643132640354675281003178260958638106816476438585549637312605729278327678431863740716096826684521470831303896113436499374478723165893951251015905232814944552169505690814337660987119038499013176815639298413011571456080818163200256850265004612243956803419820274436097219395165459221298384282963934020478563380428131738707317564328013550778784495561583375550772664615136286213749455652996141280500417896453680003541858784473543022986438628207828835545893416832219599549760576111214620899396128097010757910980366696075985560282536879668982390124034009268705773898532663913020197618683513268738690502997264447992300196777929739265294762615422104003930610640015486770761549371296623230485016287047471860056495914385910490378457617831709529746423742232207433760118073998344458850730210085359128803887364656631487658071655990769492910731645480749573578002694396754649473423559455638552352228596103579085247758935874674875657156144762793379359545682064485088234469951917605414352961700079348840040104490410570653423563780737911667718621593975588144725420324266359260539694926968308457558713076477483617025390912387980846855611566280252140084301428426703735140663286252125120310473746878562544227644617154870697734706523106422196078353192778334392246876552190340400251052821349380429204518987808120980272927744119743201918549756893659009617489429886821215906952843756585382840470390933441052877548640883537611462240855996764690020699364726864408892801270645441832985205397643136355219345993772063104759556952218304623508752956804227730288342149379805080518083691639632136460437319642449279850614441838538117109769121203460876511681749952581007836192550359213770717203212078406808359255366925334637559969802331481621754249158763335977100905176626604960280442535504943202918866401061480901459757928384394177861467194809613928361964674792093742741477474836563695148375772898994594970209347307088727577035501656928541539340945980163691948489216666824563196889338713986159437979970079303240618283591834318624109802426409837673716432091822257928871147701386332888203758262345038916485282334000599973410644462851600827375953653902842129699551216437196240258346016866086893950918710574223652329283321520472711088575492418063397272526165362546953556494005191369870105925541195892738519087118380793380931169535479858105838397063736088561204861714717289711205917665256265799554396882106715682150994132926114591108326515123081353671120011169019005544120976647622363610445941943769829243198644805659171780947643686514442048890113683123818004629934616476610750668860212531770882811926285416768372686476818218476049050049115464489580841552724573640805617111469448706185517863699273502238684636532994603681657474693512625101605253591373876068269934671504147329797420553277844006178178032885847882940146897251187457656553667974917232722672686233005729257215812411702581280107804686986539565921893090121180808082906872650852028960286873217090326770987067508077743289104435275856616646708460288586970176545503510611291871146084093731808892103484475873203580532669375726385697552049106904062567751634773954680586063979854949094033056541439176669963820786915438507515823262789350120442307134060200178669852062218595964672362397674895102110928575414011932738648503249034454756737507878646014981323444158357669032118743295443693912150230259177558243743444125365378350393380172795245412298112319077233690901562647295715733746189658055652570179732654749155569170132951088940606129360376943211141827109111827396850078280713108561038904195828167156974053384772176158882006398353846398572558387063605915810383179470855019110715288668563165980238345278460237951180540863948427556918204545577913399565894711071126646553530131045035028174412469597988972081562854144986325559184495479836836320745680058510865716692459600844493307686554816844310558792110851956316994010875889611778100551132131236990550350667696045170019659928112555231019841709554832021543098089654395326125500784015053209269929161871563277848056194471065669342627509697692387947935797001892274885244692851178423875415914506745518830086327207850107688323021031538588748552981194898213112461353128905710842286210119625422367583505099316364500667564269722057617858630092897571688698127962687970905966903155422888762547449462955303014280362261470421645257433507452174759398679351404048011716270771920075945370169049791562428755567274886146707321507022414209750868791012558625841367145119797724785906634535196441653094881943897978274001775217642137741474837764715752192730493759329926724922717063833583251209827200814650550034824190888787849181030445119826033261279711302448299874064624874063399625992263853989201742420532111781783475810428684331439733140016396516881636907945551332398570831458265899237628001051252897434448179868764525294865426452424417770900656398838853774549746079430518365412370548100392711104993683743791866620470815959490343165348758226974220507811807058232274257495942548617156844804945072041626500524796227042425515456382213690815214243011336373752210987197808341692751769793591488989204164930092851030875185102094740048915678667455627846657934875461446546191887552006502448411011976241342043250777915076454616587570918348191368573610753606328027166548981571414618698492935925386882742298032945874741299805738031885141149074196602711762468052038731168731421980037874651236350634165375189067183076151777575559987284245777094193529291634451869365281647585149085676405064465307006176389648291049105268851211909896313209802113007890114061084590001608947161638234751148910496196416597404513955387088599223300770050007399511237339631463757475158870120069489408058577392191214674501163367472223956355265777668493381827128997974645127218326954087825491671508950302368145688290048135798652601828227571115850215658842641220658395443520054409355034651923435409082415573637262943390092302905241220950799585332212971624409115910461390944895318056644527155610681599572801177706191580462650254586343188636091972707738838674532543035001916043538541190816300278329216256573545504991903573841537999836715917703668715136329324075142757361843324802811131770141313964789258294489117197363980903735236772756039635986211756983244585591981573403423193284207983172932810551902984873675017027934737871699809161800536219260637050097926410787989848555616112175477377112267393019395159154644774202595158671869239089239388297177088749391346655699855002315068425772514191700970041185858756612303562856179976964471700340990243842864834427338206886107396910618992924892452400375864208843991854029120493922770005755320765895646779536155559510783656195192332558809745568792954389524040708752994623567775109340385783296589539518297765863992227157854439293894919169982594368749540312557919834883094173254654876880051651447177329735633311075186667411219297332980089281237837047631218471817257004371368988523517603684968537495477164749760695925203986998976182572415705954250153918969773872338354526436673832972311951896930670811715955496013781340684054628041433812188625942933643905434133336108235277996009448477061340874984370902549528564677231155843488187257946777656992605089580817966113258421088374781402700769239389806943606556016072864797982425818965763785843024934838435137446074960770825270697885834983155542714533939909414242109903202486850436517826886254935236242754595901930801042537708665247358634586546151218139026816592293304323145200048783271152124822400759409115993540938575524064239089802617893694481109960835816454651230475597373237860766161118078664562221878512301090551088926579565255688703856632454662097335756420814080823920704844032617367927961979010688912793064968014470687927375515640731712540573427588505637757842860124433089470704077213433334626925630437649455141518351466754185744697270456586249927409166612854089295942144618661578283609234801567154061460296004731160300455968510776256515858770910476800923567266389367336742518994498233319239313576075242817942767585900509704944340090508455393228820084852768283253864683208181850659968028119706799507983685896471452695816771602218493112380960491691150773633571317908298388531109195465929166449689530980506767980793809136481352180608613930102838395226409578142393232695701181137774313109648760526120982178209450396103219773159710192807817264552983825124305705324051856095709048517231314272720788266657429227337416844639132284288165044123335919250599495413709016950164360866848353470750415321203512886779206030793440174993807766290958890328721937605029825974661131910879532854184802556328177562182262419979917376783146162049656685801035372959351663820623366918085542271944511512107841667318025470927753185823893036475728236566975113677560857522402639425585189403425115789990263962413156900210230450613089306276119401314534782924143011852950335280373665805278624184724013872601976646853047019642657940281999727832353516510793931351529132138157873925847051152585664004325310628541821220484161572551196083229810847620570926854338832569187788184691449300509438141368493085115800939978701171532114110170206675689070004923987185498618913218924472819838526525169688102090134575953197681271937442926553335271439129197917549121656836180741618612716792674217343984007154753268286612594704345600298354932991070296164651508074811896438707476359228629248631019683807370844650599440168529756359223670859515652586988588312359948430812560106508025170079971675526216120331790246573521732587842277144082220775243415328320573204842760406934835949465528149027182429177815861584179073239510609595780341335698656633190052891846064741524404733961289936451207299942019392188136250724466485593193094351317738286174805694831917773274451434099722303884141271023727343310798902855114669733128015202530864720061057887447549296779863680682469579543765895409771472031172757109042204703156108513996132855214163349198190006282474506999165240284949319335072830243591542421295648858815087318938910709733988452491915899728296459770677914081055721152495802839057813407713742993024177805234356259193117398987636592775820437334258338144140386590606726549147282576305535663109343951739564954807601949649344598124528969375152876649241035112678345048135977472856714347983787509410791810120546736730753837782623648792127131968635837448727363387493787236940688868971406116022177494588678813766972950039345402901042632864816884915707133447076400032174309384779931649459201477070815061190326937592915423278123475395301852018085268008810743940204413090731052457328853727464510452133845612658449323265153466331974477122785008309349673636849930936978222371632038411878374216247456466054706293014583609875750749250913914155013549539890087928095129688592200605346437701669915670570862636988031206732867559933982994062250472690986932994815911023115326003837265221029117684780196013149038653268096138984963883596546912678019591792183130837554351437371837599779648741551732995891413735356457868428637629603091849331496293611075477185915858864022559923733706150805410181727565257419181214845759135737650403551668075236671666967841023707739962229621293689506650534969479772704163672047365764789978051969760384885082206008174020508361886371923266133105958105485551982063060024248038278248380865958267237955498937590143376941463883255089161966967894461725977219872792186070415160437869718164523647056580146429805143071499085310060455005195743425643863517215000801771848156692175971331474067322147794007821616427013729664280311507800090383621988763058590473576922225911113816487300672888660898188639948807160976702394765144308768430993209715515923734017003297399219647912289573351338096710704266262962199614941609703166727084995894285627514302012254119584503363614696881334901119237742344768567501430654274004037226697471842803702249836120363668457157998505478645245843181056128814207374050182518536203443591338078494118611097024490096701201116001425052306218783389213329177638691832830089390474077672773671992956890853361153736452837557125914896462557005140824716401698873217881797703602345162332382388849908897793496737942423583757641520908181292799337793829811785919010724690040843960910950752393862963795410460023659787230514778983397149605515770486541520839252520764004862467852289506354415057158478573632148771095595676804114790883193383878540604833584594475676604724055697603742376627631722387920321349804246522503033763693048105749855719646662460321582237906339619161508340561730543100232122216901805934424167948471983962208750535298656277201265054457644214085684322727842696722405623601983017558527154624269794590441599386609315528919407159799415165078454850124712546485090352105940001965974581389505121718892034933973707048196313145137722037210961366697770764512220455294143312449881091354112555429820510699664677188499315119712969950581625447617998577841231200296630573932035966820861083169503897847694129742136733530862770518850271395958250293635304244487167466481717085000040353377448154136656265356801390953365316252677279944488751551187569528543621188608965120223921676600984134794657357505334546107606825991036696488818372811274227097685433493497163092372859605591474509471000792259948790735160212180594676989149068104552994852649029574901363154054553261561102792121175578839869466901003447291687711732120724019699267265149448269427828944433088055780498007719428481152403568801896216402459797765512746664053081502332158214573634082256956820526500382395703007013745495231355266868685508325919769651909497565118335538074880319002451918940914029399952827069536480357778620804968925529474432895513233229680799678516505487861239376995936584405836621675851522087049857988079466831611724779461931814331357395717971096024507057315132461296706998525211159179368225993054546143031995769160813507978777867506789326821056090809322113690104664727976321946120942475355014567162659846615427221903420042160047041909835517649351238362680524817569700445389084444483037983109223364502316964189373924750446601958437903327910731828558833080450040676664653357765946126678210823961544718865376652423288750715412880867319167686689168537699783655599384503645236645912507294444552005685969273807913142359022534089747811281114086388393274356202330008359669055130748823677160680509700236042365742604622512980754517135748329615390934696504223906340279330343438692982594305295745133407204625212598418667017090517679556233344221289197038814080919286275515866871495547576487431376578307459668736629542620704828922516004493420328626607649953955071985256798344891962961161870829493310497240103097763167573192843183302132625127947409800519742236581785771254760035822806545445176512267525258269601149715946934781369770691038020791105509211618522644108245785721555542991328902252706061252714572333194713181774515462187390537489066720167023061968408557850052026467936659524334442191031455551289627806273399736692290721667615865550325869145432872833463732504559298541297483112403434408476319100076768966072144365631781817126537541181693874200778310640217596083761887988941867128189820390477516848822354574842249991716604884725581313713904124840574909156800622164606455209297313503158158499885905107015365327055837145721210684805221756618579832390401790933912256302873844093425767743350417468327418568265373591437706006882300622932791006388259540604497815279265956813092384598805636719010836021880230454317506113610382822319546452994872236667695540224106182765972671896467909602333787280528602324854953475733837877417606654825609792081851193694141853170390622153413779715191646482864028376875847728433193755085148870234525011893420846900727030108418180738022835302726424107367930768212752053990008221370925774847317859259844794842333561700348598260937098560239987940799147154010778573411360444108461723777817045646524056064196178116244416986956180925252661624693068985500053558153472769170202192589759286607482449935291715082682876656874058831598741541123159765709045785877303332075066609048538387675274996576323329889210588222383087505897284775571700723380693136821685210957085591122716079768599203186597049637180954767571429501447510985516897660382339395449733931582054562059465691662214845933941309377005848537686921484176277214697064639936960151951917993782493954843676975965676156814466288304224316948382446659933379946092032039101114494125932347213117237209261565891377388845863732397265336782375410948296774121444289687950479384369002972614111621164806492317924379587598774045430409479251200738033484461554785445556057857380129301431870229139993930391437314389155811563208968423845841131625957126167393307347243266354260862260093350026468299138457434730365923256749218532460445687703232678949248845558174524326657258558186920847578982982667618444598123791693881918465889540789021996324225219665604783933488713677504741485850691216667153192906177291740202560405014555979657473616620631653607032883946076913125045250139894657712169375655857482289824055816874481731615372775334841792023270382427903916975573489622261830326929507308299116672898777979680141153213201679894012187181694644657438797210613838854055913788485145748006608578455875395737510610104000547524550130625844117984015545272962081523958762776127642418955692397425382875192480167067032839038955578388273646955458830127574232808397161099472709729281881489297435670728067542500732069422125154101743013800971479802099291711092677231974277192414602683153249686741292270372960906214435088855300134601454193803079878847762841643033285949185642662065739967697341969173050737548664098117564445315439690026544315385351251824425011605251356746472971701658889465505021076056722682055699065379665533979098681856447639994717569191280603312133744245123118905803688482689782355703415540660890961548683755042805608202676971534084689806887864494991219447332610232944176117907585042818928610288197015124237599743268940704334757318238029594185954556159942207735348339358789563765138558101239498964592345548035123844149204221743054024551583468178350477852431799085025862369040147608403131071189722260680936721276895113335696808901601871706514090728696318814359365131634610886772401556987940477657413414151026032501180087068337301242075742137839431501290038642779755615289013047664342720551370095009165113877681301726781388743525703152167147204005596238974298761902907869923816709513467500407760516765680541061967674414295122277359243583765429331832559553341392045940058881456857444900416711259640305350983915670940968509167336572283167541373937269320929836492636205794574885381306296361252347324634777528598983838531794183526629073827924269261680430432552832461565081830716088379418927975193412093372113311552590111660640547992000966864752475352370796355881970899164994187500418727431900803698343248152587234115450780652494386796442592649365166150459126940457825278565703629611106369808140523585643308597555194187962934141922239209685472950728723470901729097145723873421083029891776018049965282447880137818893373096799024123634549319016236090698249563615259912838591336205734676397100572212907886249850534721305871794353365176034469131747180039120496407691844674488196226375497604640110285741210394656804623549210073451171561710769280978365908740577308147853122670400550645078833822255416754955170983965815140744049404922327220717746049582968320737901183986057069769569369303736604641392636933801440781084339845583604134828004803024086646736082501015826498131681055122946445873021914159899671654763808291446705865999281245396495000035076019535622284879970243331152961577093403547856495632846723547721441120907315142270592752498248340399436070461007594587923164259773720321143796477968823707065094252000556337239958473433138205152870624731469303858566431130998781980689011112627247366570718014913970306538531882280498440928016318760654184706434808749142338140474534136440660635419480895154306240318992147740529864116219713573241210469228150151986196678922441126703544764713878028677112627520601713814437528270152893923295471109809876058835233827628746959814244414190996161858985799335429116327031492970008584419488873517952747533261943933879528363309613818988143600328384661537424058961022712895200307812366878829226536954293185076051863094430480709396095460452749294656983080519437516464552124510732461662895136862251096388407307270514815228035554335239396472425520461369610000980220715409657840395324962290867623265889857234695676452676738974235183842668269453214400801501779379102779303950753610228973391816560606303877643594803151797803373522738510100947634420940746594737963376222422228744741447146952777431816714290508879076380692893169023457100204043867223838717336074030431433816863137244756937697344886768480466070940703640940591231041665389098560411758943657432084646510527071351969276964733538532070738150884703890140630451830681224476825459130941333753374278413340364661892070858884037508345582390082460695707981617254928021492989197859803654616093853849855260442568250674696905865720782524566692976895832301482007332221359692522138770080402290454540518458180918060289807281648077392640574912900720857329971734339645347813590792559303738528579946618514609341420775896312312829378259427283859138116321187897001065383071222513761227363969149448526709026421204976304954244601222734657919855419860115922461011463027355375918008589680450042751541081119835169117626243170439096577771816402636744268997241022233487124134149070793984847396043207817811211893426304967793159838547129017178016707891647593564702636360967786164824754083062744615731937056644761508129172933670176102785423687672943816695420229656962165865819987042585145543628323610980804033016659615059698716336111208967038302562499839264314681243217651784434797466535664314542633933775306216398300456328377966645658559986497276861679082019851962457156917496941791399194197113186546610523276039058089755181947835269062758812284550140722310346989519362576614895513811145778406646525089735315855769106163458750883799599309235452415589262464357318644886291314486698416062219285242902327312284747201176199951838702253010244832916751958651487262669585471453926942277835019589378642849576414432646306160580008384809913233747683644482680854360233823819978069546832887471978244442893397529654192772693609752337931257399997777110870729791980898972011380986297406423730575042348602117530731031457906832551765053007198729468794420783139553196193693529462302665731908636543840502277633481966064847631681323118963942006819465049156274726837334539895225132976026561703295217188795484814347684422138258452276347291091660255946972879732398581275939542087897695097523070736359330661050733157431734994057912172297987543300333186533637719412013871876472787731765579895998827872743950923571178915170817695311101069072666147574697014527795480653772899628952496733606443867356196611742587231845764181448660574916998727191793803647464182096338794493276582724184240828705409202361417461052204301142685078185352040391378437486287785721205599632170184634115123986146955501456266985710060279423135181684954806566806940171639428706101896183862402481454737998101648303460251365419752619147370568133514238593534903421629575614123335966558034362525365916916454257855553979292555517073487617198497216327297534955682513302297268062139964204914651860495421213200294079904931090862713941089298933745884465991401448465918878480240490666286337599134945978343177052597531215647164554880829433583241497890915478853186119946503803545103083073017264439754854788932014728045685069141129439327296659734286711269883155340534133164062582217223965519558737184490998950367928787735269988527506425397397586381699330540462191498464777387770268106306825757827278075427362616984184344266426693855161886877892531863496724603040239999445296253441351264129362600389831115885768229960611746894280586297900457227789887341511984999548311844597648606348318527087165877729689315318113452953631807766897348897642924942079700923242910067036965122581369294682585932606262275582412719786502389604919733031214134728118660888961221940280380431873146875313044515883311057163679322002029988867126449555067165028448501551070443503659756603187067699232015905092670527001167259557812010908005138957399374092393656222682955331175142704203582774269813834823717046752401571577717415162110962143076794332996749114770193411850843706545653489261867645299997976713802419858114896107676466971580425310668041001887757252836763291558001197304513348340837536905421599416874385343767204743437059652477040866116216380952562568237425949086210617900334255758014229895857906077591350471276661442348620328258993583306647865016076445410968313976715699550726237816037921859583064293379783689136373618495246974185176380115781996693930244758037047974689515800908073977554394502815846979105162513228780386084802588482336396758601126171523921970754106087813980596519709384827727352432200043617294168240600546588453124778855883509554637548805140083277838793697903051527884658363027634644394505270560139290791751457349905877976212693004284560172773989308316068617811203015370843618020869460618662772447120293923261690809885035045928334680198478434555103319580196234209461570261688279808693457284343111191217546208279986804029472938318025997569869870352006763991294082526559896842525707579668847971140952891297059354294775621074986608730417172945841530993891412767859873238274738900468449045326066552373590144642781429203853241124406860921544233228577439610640462785372480188646371483551172158636876594540130318221035991583562126336627592099862271917300739407487127769308568693350164059787796501198201784172164849497563809486950233997245140008819724937934605627565476034801061502783794255843048463659543928419413936168149258412654267992790550525616530682368920165142286658543563116774803250519509511337052453757394721380222955589421096703899021672795025535188884359503665649583172953453502519136975477484499371510451816254586127412444933109002805955388800417345339010318081997361069752189310720664743745051204306281142323533094476259954095662345182343685550350268840667105602220661586144885973303492875987623239874359359077321634902517855978589658392455568100189910197539611506181282013816820807661378919478944245854440185903631399366448068728001159568584252213966727577098816025705137925656470620441885575980193466496787055699066015885728242180322532887768603214231115743633933666016939669560040395201091425735951023046776326571227319825893939368980013766397169316333884883084099034859090661797957882698375148239921322412994638339363600919615651371727390600318932328831540868893029378120280318332575604346931639695852996835035422803095942606406907401039401723278603395753327285260160639982743486806271133730993632099620831473748525608656707788550483486066114336604313578224254703165256337124738742641724134814354755704491684855515527710690144750552394708225739907512429180691027529968965268671124058599146038174366514167245403287024085135465037173145235266584226258614179243688178774371629208098917318041951055910399218688637134097540316768913840747306161506087980401195958628373093666323380228909477597626461134624728277200509490547962104333074841657984337686336157118325770643404840496554437028992190024073516275599643109354057104581700282378883785708080184319407936903212396117260204584924437777519461425762823981211432636412003711097101494393589653751906455055857480454032699283647232570888605474408935787847459620642995181153180897029124404880584308369684871612783512638946590006814178307912983085983004447841836110998017347311939489936897350621402368560373622154220236727916168677945705666684395894119373251204124154194348019584730274378798294314428942343414293545616589488379707991216536539155185803236055354511907868829383675835039256562094440063383040999246046332512780811480529635779011230600173299698504415026313071564574975198771672675212362634734013969307369566659588873952563586499086629141695935447197214593919187866235181495009531077125200445790384048253581783544760683944335557389046690035524849797140676506595707750704098886152219532536368510670563356630159328288715863522314616715749159574140826516474448642832289836156871383226906395515267850383477062860583860845167496120476563859072592039281007670900157321870186808484573287456893454982772770623923496567758668157210627105264175341098341928938792631088259328305903157480773111339530930179445927300142680009171108211548478966426056246075731415262384328850052334543647950700970079837482646084426931053399551846993080072443520408288575012571187517479922409703057783104829910640365439263273226485283586985778444709858537955578796593838593955636587559118707390256491784073208578218023656841632454864579779106333944318262606009764370032129706083578401330585273382262365641514011173257270259817152183687977802633450625778669971127128461959696943165282273347210223822896181101377360400548774845055396550004340247743200334853039021241190506103915602537129912250131167655808198556446627303782097709664140463633615919447480518101068482512532858130232289566909227830242531740944916307856580451418046671752543667402055214646095171553542591175289117601083276105321324077559469067785632264608463832477762922660447634160539994605716047958009670594146053830870693648430517307845037597208441947087355305527559820236843676985008693114137052207243837719196158064768996701407216562365067944002537333391508793406007337476877930705450344883942464250893080036586178830748803161207485494673056839091676686676867083010430624064997697586452584046079444667014291634936582487953978092132153972211124106375071426116890752947235650294952385964916718210658034380449477858376465271677726594182395149898217609700272826672010119114333999646939315918295419406089262944266506115435830679798958768909064626471808248653390025063163749436120700559742881761519940520963890384015093615871995586695972944535580462809653260638837726324682414802277537146574164890385791014771399363762080806449634757029254879698037357350485800232534054266327785755583972033538235995980909738390837667777298146327684387860933838694340336749718014083574325555809142013990976867538950296980876943291455944762396942683646153088912745033689022864941112327727613020155066865033314095091314418421709567396404964967545061013936255438799481326503547854651333099757200972769999815647527233818745383411790570960657057269217058033226830222274059946588215379409362054264201026212488296357471645649073207877267835348659317879413320841233831889552817754505311416493611172601259825270925581495116437890464471309988048227726223268244515525988319578343958933912362826478671064323218983937904166252571917493898581271617184841222612614072842057722452404546224282918938325664352543189015527222693831634729317479027092487061261409587820752809636198677697685421170990359472701252036670753954132767583889741154057231775563627722573033797119559667339628413644574256892623458337712790191705612492433366088881287114634550475128468180007197968204341695055428142040475147482780686260324362122673331671701519969069673662888832395706815378073567994424086485123567198591436299434341365049971652087068210581735197394489605862449780179209232142175103343052419784392493419539318546985035614762801293803775649020077490275978363707585765820655201683767179775089816365883246395524529183461241903395444433460755773850586467330165629405447449135876731122213759482472328051357263666022912197076130601348522045807123600127368231666259531060292419338372635009842243377091032378189841551823339373178575487515689991819516412071294395411122574784782133741890432472141507076534827258966472643734586781179802780223711173376835342908196790286288959576218280607389596972999138596299013828880324433244513694529493061982044665925716120155137233891598424345329949613365789654578903070119341057451055305106268885183204411210811000133800454804666347548386364167000104891918700733163436582561266703134913426851716970362192787172463007581709093915854917072330784141976836011601378398198658828516225304514804759177493165228547422871945979979147237753879382004543104773845421363269775103020769794498667145153760431222154603757834810362202282805028100120968800859290102474566014429809994388596544449375934054930875932930526354876310155254966802424191250561429630941929077146254480141406306251994679126573213588365270481072152163455300091122469174526944115226592625261510176335985445962019767280805033227863832233522372573547535952679783244225503985231377611839001422059008219834307047894894084386842015409706777271353282565254107501808082911102664412282276634934658931750065278437081391637101523245130402252544445404070351390529272040578922065492382029081567645821616392086819894973117605607637320891155858966608689484586333781651424246543526007512075945161590750623760508566503737476111823230710787263640772724666320415804504028840282096766725781633227213939155016483584299929194474043557605930847664873922424768573092865144642186319697718079551266894804380615818992407572632996183623020985325973446866500397422024391989942775118121471222046453895072200485602022897739491823020988616823629585047621464471591210254689591432440733558200165469259178981737878315693002139074150117369568058155436320624988127939259193627196669214570746240086459338902274457808220877327766555589468439758541005291785709702413570313354474314860034878599499289338835319324943797156612661067985566287248833464158472529704651103509676105355830470299230688453423096479173793714116486677189797173866311895356696545935347074886962222319200043600419742664639513740363488607163501208212306554347148951941957217702716637343626222640049985066565220180968294805775922594472337829596656939465487971921011862381421579705151566706033855853935767048594816442198878822871824502016327528171622717804867651776835456995298522365614371356086605169068255971451117409007565850562501180018969568454529891998194459275676886455384577492034690990673710371136270111909133660031051078230377243928169057210463653505581274015548151873251814509505815145677965148968849705304585895911812479885675011521122619869673371413227224306256480451844164984311709958056332924307879392732734437494933656268481697292390581066965499678859544974479968792209239629531246305538855177093679715343478194379143321697309887544976386585859347432252101012128210918946186926681975858124022675031877364028558563977141863632558716193497782381687013379681709447481865252008671838345624438849799630093659316893360421401100377605924157181747937519965339732014747219110611056076598169696978102346756327786263291317704604870415555729488106903755376336715314575932124636430897665078247131486993536748783355628257911910483714805360461952872942643064546944258776249123325185899187076164704526632906815145794092246871311633200884423158155083047931511340190158346072534838115524412633982221707072923370171710801699249075824046000562623688486944917574613889628637338387103169012942922258895104869975275896355692762531111816109651518745132239136732331935869056313348978828948907518885771280339059913448823429462961289908657733591218055826929841424274099237082326490736144365322245516492304179220170581792587101803339163413248154199265136105385596204443733030890192949758962406112993819052167244637546505035977983352995331342305042521545911799216768915095422372385273112169945790084497711238889552974624881808400838227368477475394460201025558572874352534004244189195401969037816787922614228350464811721302880327470314753860640414054505384986634736664276541685233286547315364739991891340772584219697322496164053381298390379757134183926375407517486416485910935186913158803057377262717903401325690276411897555132987793224668109592980087546161436304778042613237127693270979022821078986667263669646104567942322235338526988101847795132483553367545213411900693370189291376590830729049805298661047951551111101472065124605900873445403094292355043236216966508082779841982303834821971797957558531386437757421990313499208601245921288984678957430789471435292989107708525920964615303656408824309549949899397707627550206915070940491385266557862685993604788840708659342025960463672145590469429796838188426799904718483707024845566848756521296382627010513399894869930204223883192883483119277874703323176841761660947160511306863388723754879597909180681210388642877399725747737686116743471547276229136808689596285351971300086163576839751677136809680611838824892890760035730181864874847339646599215912487617752911850005704311498718913337098700616143816528864180179338285049466031805307504925442640005981895022428113327693632218151407559345755439235830642071441153913830734241398851744188284426571322506238797753546382445048410183897913393338238652355223697000193352113040683838354052116996092670027997610075964618612807349128567782854646692993097849794558038289173146537607064699945096304075521636305092886973002643587709718731247044726316116896787897136634820184140525746621695448941038454223157882670583501143328920469461181767388188640778126398517660324611307186098669600849346716207693122159044980347842224280314274999744285372557980238214429893992123685367920451562818682408693703287373422316068679849254838713325504050212996031464370942458959388613598396112313434113296701109767695581902602339557227906834553343127018029487553346789779131978865917984772219926445019609426621812410394643414220274001990771357256370800969749876490031608329357840383394153899201859553624104717882687512792245971268235814128124652795054748401863161019695419057309343590722787149328826349108138195953098638215099309835579454512629901645934405614513273277083153333247156019085449199548623137922517320593410406933677340678737390341183407673132594426806463140143796326337388012498845503537896909190261005323036389436802144829080913054921070866695733915363977609515989970659584268745249069755897565967423923334181399886534124200568118740585064098813219006854947821621671204671481843625403431381252025218208323099686386756285597683605963761968164807620569129560977117824927694538284508154842070104811143777715088376752688213011007688780221907921771130186275538841777618024389878986403481778781741622385722101636741668558333456315912687041476425357582348088912490556339818544725732607918074649859156177539401609488083736614157541071071235614730064171788978993549837067200982704823130624832108061408048268418100587087763357527659348965879621889929492883286347113368258728788830005540100961485600266863929785023826678343719406440179578081989345727383181288401239121433010514641283049903185859952994478696412985122452855834396371318800096563934890483614775366852513017384641628027740505189988221852434190043924777087609293667551251963035572842139465513711113882585539410288581997660637997296832578513487261508951422764473479466931851771190501270277598719630614753670971940927813738205994176101124664164197157422326791107232343423601827780045684663247765789639606895763200400801165071943085046546326243806416426807887381642967731815195382435002636930332081592117363531383334205152880930411081847617814010355316418501961701105468809971794288824186060819752141148242460492298358071484174592526336771560135849705027383470221831381291866387303221478174304153143387148025313618373807927156758890077317369919721532747991292068986377608652060057637292193425246583970323280894859077813547926854414714972205740232642638579365123744985424941740413472321696381035706496713911423821597693489217408833366411491202430420981833925635409876667665968881007975039658295842997689463423538545899512200130234325741811593442220681468979070909153941940689277830527114142052215728707942534251144915137951446567092129146946631605454762938890194828602431710089384363640976959665382197384661594005477817244737532848531668006695260575531144410012312356111484806985177064662550427356319741486154184495118095318419732166867282879819426368176006872196378932262832772421480129252250014072193561298573668639250680505318734554351552860268969106276584457718184791654248040330442441041970394006650542115653004638942804139239948458497433468297858651274547898283409586986748607691913731965551165001429674919836924969251083714407599893730076682419476904540879664402890231119054761716032340557223065223119512238231640783356565246491441124470083395488240225885780152069709315179257219234663473210501387119659577886814234184480416085735130527211126284944771503453431885230202921969866352869697358522941975840402710824079350159921557283024577265332621842135142607696654362703290484841598678321484257324854948243151384111872608798355560325351739322749491514105966313550422939711127679065761958417177716536199582240170472489174956118384035412908239666835051677251610448157400358323952738133851650229853671878222045488826975537793600527477152070266255114587254171397806480161882870170729972224581272498555553434003470009403037623324222437163433979984565620967382803362649778610574565061636562514696461079467870291348183598245420484906450734045470045774678390619976805090132931005464706833869395980782305806360960835585180556475026107403633694358582605645010320853448746738323974240124486103955722319548307705688137208103962558418411924482766450814351088729497553628228490922406598019324721404794758001542835235613176546085005788499558794214502414780262277433969990436563536534585387020034793291360096901298072492560557411825953141317985155027252533886235244243970284152498633089731379245358117572856851759890818018774918031326200069800138821299044551640674342455020763635874538474296480249251286280116172078648581614271040554358128049144393729907023313249006496767432911730087824144749221747666715220058879837976222677428327770793056444993078789995093509706797953929250317483510729409015068257622102810333588694442959638501070678647955766725099783319324125063763735763744048602335115421852339596598753022304926725632461527375401544760381577042869650479234518196299390380015536862137759222650346808487018118180655962876077055322486901435214278540894807000790788360470830076602175134285144190645256504874446837552649108284942240724180646407177649708458392685659298277270144079359370378064392195483204413348904119046662605965384795770031992271413980272292881377844937263546552967519787399493513342056084131922866595829867268161634983082106244910284363938216139959063262753443675411568285149732854976515104985777515211628273732813677550652031544633612929752889478411949372887872093894736717688297900770392776143390156598744792671429929623959060331453794451793267782107610836053175423100392281766819957460768189600951328883154364612763367325575841571117197001335545011613022130734069773557806957853974802006681033679162335807143216899329436249053916684984465323700840563324605653412165274690648812496288055597955282266953976374257979998990539618278688890136832721764091571961961388096255526510056662849338224859660259749636144381748285715444221987637499263229785471101666014674855533914926207840972093229265305798996679380329581476790511419015646857641542942658848476551094203148716530452564376253857159727470774233507022126975748699131832541390318300342702231127240050026470253365431748787324492440102858733921730662159658631106343512559875351466305725394570702707356405253953656403808371592919654593601014894547289626199453169616897134224558285651086199253239592089512720399515313746089170361236038325669849160224814707487270300065610886543880402193101683103187899918691529478958320575829094166583133608753434668762032657394675599330059823483115186203270218116296269098544791139969682848846651542930336669872293721276450930019006697073950003072694004027234213397261024922222115431553551746882839325525088430152327036157029408029113217195290578441789971671341826834401647049922545818508647896158138019285238174545940673605744942263803753089190876560813949132385610649345159574043431696637071110538014755402670299320133346809701322345177598109084088988850554946784174531436640643232005716624023707854725363929639086819594901771524657294812925569800153913640387610097428997940028994165992834488303136698196060470148166083652188409872156832410946011062046365956628744245812438652663149412528609480030515592442459336506516788618929917743304650217890871930816690847784156134772869727551707926866259383806976950636453319320140259911854942161932273798042654603578976271120631033517979937124310769474012339175316289177717570405601895840711208055972382470863476276335404161938590768962039806087133562011767355080768365490741762234111682638503935400665795805609839906578932982312804898021798789951665332106686508094778773728879177178829120813633119796404046007222335146633519642102733621322031945396560140157270615755229159976878992719238548958121958502254308130637047426665189374178382482849002243143187270292020626126593326900229580592621702595870035032226008481602558604224131311821004235943166417155115934375410417435130229891251669848980740662730528980156958802849702843557768258103236869375033168867608520601805929454334918351124825287795242449080729063330172047663169441351365120864101798725931030794631682555843522794705035356202136756266121731507920369644007231108181618028740594455472464917490975028809488896198420301032276979992922489439262887433808769639881854740766867961388831162298530468571717788832617761357772590846626200980368775802012375417983244830462182397372254979938147865322014889510185584936338397068432756937415791026415001416652418426605752632137859401529490312337575862181260080168178768349352805383266628734938201818128563431832355745910150106027699657207701129644743956812905264782657846196257597631952097428265521406134675856266244153811033394346992341624179396816815813183295309727359419501359687814514680096124293740285431926446296057192028900803506832246154530152629788873129543560490918136158643842111196915470996095640073710234121864830349771895083821395663514811974763167268840144988440887995601112555347692685470165213776959890044353310470955376866967891083337125435944531588580552405885477028944778347663827887182250328416366326559926438998706237284272014469931939487322337035065413412422876738534068991474920539467971121616271980110948866924693258163074302408945105349769176514711421472560261348090467211461759677015020791808068443871321606173440797696143429300806932546315866910537374509261447180733190323128181707762532156930499942142357326802329661830285846447167954907298516574982404093140925682538629578977850833956197668271157346775647562963517492147036286632107650786191062308328521065867500704719292552805388123280156327701476225181361724613243064219975890281938363567089599317008334216212344659869845682231666128786438393937021145728793943819959000449325305379486054215890280489591326650284045436925399849214877956457199444829365107256335229915255715093326865219353851443471900362552846868998321294870688879396557308843881243047421328532347808292717417931663174140614601863149382725813824349499899831747853960179261141585293595726718486860609232865775606343974282078690499793549966330477074421925896038576330837446990934643600941420507212059242734718799092519472946762644674234750921085201734227004240870568821066983798230372217205049719184687628517662624807967279196421332773345466350609403866157059586362314265079134710197270563809617926174437355999060611422240568795602744386447839157526275657400158194440075267228392375296972533996171570915787570512396